前回、Unityジャグ配列(配列内配列)を含む JSONファイルの取り扱う際の話しとして、まずUnity標準の JsonUtilityが使用できませんと解説しました。
そして、その解決法としてジャグ配列を扱える LitJSON と言うライブラリの使用を提案しました。

今回はその LitJSONの使用方法を解説します。そして最後にジャグ配列を含む JSONファイルも読み込んでみます。
Unity Basic_042

【UnityでLitJSONを使用準備】

LitJSONは Unityに標準では含まれていないので、まず GitHubからダウンロードしてくる必要があります。以下のURLから取得できます。


ここにある LitJSON-Unity をダウンロードします。
Unity Basic_043

このフォルダ内にある「src/LitJson」フォルダをUnityエディタのProjectビュー:Assetフォルダに置きます。
Unity Basic_044

以下のような感じです。
Unity Basic_045



【LitJSONでジャグ配列でないJSONの読み込み】

ここでは、ジャグ配列(配列内配列)を含まない JSONファイルを読み込んでみましょう。
ここで使用するJSONファイルは配列内は階層構造を使用しています。以前 JsonUtilityを使用して読み込む説明を行ったファイルとなります。
Unity Basic_046

ではLitJSONを使用して、このJSONファイルを読み込むプログラムを書いてみましょう。以下の様になります。

Unity Basic_047

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;」が必要となります。
 Unity Basic_048

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

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


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



【LitJSONでジャグ配列JSONの読み込み】

では次にジャグ配列の JOSNファイルを読み込んでみましょう。
ここで読み込む JSONファイルは以下のようなファイルです。「”position”」の値がジャグ配列(配列内配列)となっています。
Unity Basic_052

ではLitJSONを使用して、このジャグ配列を含んだJSONファイルを読み込むプログラムを書いてみましょう。以下の様になります。
Unity Basic_053

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” の値へのアクセスに関して。ここでは以下の数字にアクセスするためのプログラムを示しています。
Unity Basic_054

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


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


Sponsored Link