前回、Unityでジャグ配列(配列内配列)を含む JSONファイルの取り扱う際の話しとして、まずUnity標準の JsonUtilityが使用できませんと解説しました。
そして、その解決法としてジャグ配列を扱える LitJSON と言うライブラリの使用を提案しました。
そして、その解決法としてジャグ配列を扱える LitJSON と言うライブラリの使用を提案しました。
今回はその LitJSONの使用方法を解説します。そして最後にジャグ配列を含む JSONファイルも読み込んでみます。
【UnityでLitJSONを使用準備】
LitJSONは Unityに標準では含まれていないので、まず GitHubからダウンロードしてくる必要があります。以下のURLから取得できます。
ここにある 「LitJSON-Unity」 をダウンロードします。

このフォルダ内にある「src/LitJson」フォルダをUnityエディタのProjectビュー:Assetフォルダに置きます。
以下のような感じです。

【LitJSONでジャグ配列でないJSONの読み込み】
ここでは、ジャグ配列(配列内配列)を含まない JSONファイルを読み込んでみましょう。
ここで使用するJSONファイルは配列内は階層構造を使用しています。以前 JsonUtilityを使用して読み込む説明を行ったファイルとなります。
ではLitJSONを使用して、このJSONファイルを読み込むプログラムを書いてみましょう。以下の様になります。

using System.Collections; using System.Collections.Generic; using UnityEngine; using LitJson; public class JSON_Test03 : MonoBehaviour { void Start() { // JSON形式ファイルの読込 string str_File = Resources.Load("MonsterInfo").ToString(); // JSONデータの分解 JsonData jsonData = JsonMapper.ToObject(str_File); Debug.Log(jsonData["input_File"][0]["Name"]); Debug.Log(jsonData["input_File"][0]["HP"]); Debug.Log(jsonData["input_File"][0]["MP"]); Debug.Log(jsonData["input_File"][1]["Name"]); Debug.Log(jsonData["input_File"][1]["HP"]); Debug.Log(jsonData["input_File"][1]["MP"]); } }
【ソース解説】
① :「using LitJson;」が必要となります。

② :Resourcesフォルダに置いた JSONファイルを読み込みます。
これはJSONに限らず、Unityでの通常のファイルへのアクセス方法です。
これはJSONに限らず、Unityでの通常のファイルへのアクセス方法です。

③ :LitJSONを用いて JSONデータの分解を行います。

そして、このプログラムを実行すると以下の様になります。

【LitJSONでジャグ配列JSONの読み込み】
では次にジャグ配列の JOSNファイルを読み込んでみましょう。
ここで読み込む JSONファイルは以下のようなファイルです。「”position”」の値がジャグ配列(配列内配列)となっています。
ではLitJSONを使用して、このジャグ配列を含んだJSONファイルを読み込むプログラムを書いてみましょう。以下の様になります。
using System.Collections; using System.Collections.Generic; using UnityEngine; using LitJson; public class JSON_Test02 : MonoBehaviour { void Start() { // JSON形式ファイルの読込 string str_File = Resources.Load("TestJSON").ToString(); // JSONデータの分解 JsonData jsonData = JsonMapper.ToObject(str_File); Debug.Log(jsonData["input_File"][0]["name"]); Debug.Log(jsonData["input_File"][0]["position"][0][0]); Debug.Log(jsonData["input_File"][0]["status"][0]); Debug.Log(jsonData["input_File"][1]["name"]); Debug.Log(jsonData["input_File"][1]["position"][1][0]); Debug.Log(jsonData["input_File"][1]["status"][1]); } }
【ソース解説】
基本的に JSONの読み込み・分解の部分は、ジャグ配列を含まない JSONファイルの説明をした部分と同じとなります。
注目すべきは分解した JSONデータの表示部分です。特にジャグ配列を含むデータ ”position” の値へのアクセスに関して。ここでは以下の数字にアクセスするためのプログラムを示しています。
そして、このプログラムを実行すると以下の様になります。

と言うようにジャグ配列を使う場合は LitJSONを使うのが良いでしょう。とても簡単に使えます。
Sponsored Link