Unityで二次元配列のJsonを読む

TOC

  1. ダウンロード

こんばんはー。

Unityのステージ内容を Yaml で作ろうと思っていました。

しかし、よく考えてみれば、Unity 公式でサポート(5.3から)されている、
Json で十分じゃね?と思いました。
ステージの内容は、次のようなJsonにしました。

1
2
3
4
5
6
7
{
"version": 1,
"stage": [
["block1", 2, 4],
["block1", 4, 4]
]
}

しかし、JsonUtilityでParseしても、うまくやってくれませんでした。

■配列のネストは1つまで

多次元配列、配列内配列(ジャグ配列)、配列のコレクションなどは、JSONにシリアライズしてくれない。
多次元配列(int[,] とか)は、.NET標準のシリアライザも対応してないので仕方ない。
しかし int[][] や List<int[]> 、 List<List>なども、JsonUtilityは華麗にスルーする。

http://ch.nicovideo.jp/ntmi/blomaga/ar927398より)
とのことです。

というわけで、LitJSON というライブラリを使うことにしました。

ダウンロード

http://lbv.github.io/litjson/から、
Download で dll をダウンロードすると楽。
litjson-download-dll

ダウンロードした dll を、Plugins/ ディレクトリにドラッグ&ドロップ。
Drag-litjson-Unity

次のように書く。

1
2
3
4
5
6
7
8
9
using LitJson;

// 省略

void MakeStageJson(string data)
{
JsonData jsonData = JsonMapper.ToObject(data);
Debug.Log((string)jsonData["stage"][0]);
}

実行結果:
unity-debuglog-litjson

このように、jsonData["stage"][0] と、ただインデックス(?)をたどるだけで、
二次元配列も使えます!

LitJSON便利です!