お米 is ライス

C#やらUnityやらを勉強していて、これはメモっといたほうがええやろ、ということを書くつもりです

UnityでJson.NETを使う

動機

UnityでJsonをいい感じに扱えないもんかなぁとずっと思っていた。
ググるとUnityではMiniJsonやLitJsonを使うといいよと書いてあるのだが、Json.NETも普通に使える。

導入方法

http://www.newtonsoft.com/jsonへ行って、zipをダウンロードする。
zipファイルを解凍して「Bin\Net20\Newtonsoft.json.dll」をUnityのPluginsフォルダにコピペするだけ。

使い方

using Newtonsoft.Json

...

string json = JsonConvert.SerializeObject(object);
var object = JsonConvert.DeserializeObject(json);

みたいに普通に使える

string json = JsonConvert.SerializeObject(object, Formatting.Indented);

とかすると整形もしてくれて便利。
ListとかDictionaryとかも使える。

ただし、Vector3をシリアライズしようとしてみたところなんかエラーが出てしまった。
ここは要検証だけどできない理由がわからん……(なんか相互参照してるとか言われている?)。
今更だがこれはpublicなプロパティ(normalとか)もシリアライズしようとしているせいで、シリアライズの設定でうまいことするとうまくいく(うろ覚えで書いてるので詳しいことは勘弁)

独自クラスのシリアライズは普通にできる。
独自クラスのメンバ変数に独自クラスとか独自クラスのListとか配列とかがあっても大丈夫。