Top > ComputerGraphics > Unity > Tips > JSON > MiniJSON
Last-modified: Sat, 09 Mar 2013 05:44:19 HADT
Counter:14556 Today:3 Yesterday:3 Online:6
このエントリーをはてなブックマークに追加

UnityでJSONをあつかう - MiniJSON

About

ここでは"MiniJSON"を利用したJSONの読み取りについて解説します。

MiniJSONとは

"MiniJSON"は、単一のソースコードから構成されるJSON読み書き用のライブラリでMITライセンスで利用することができます。2013年3月現在、2012年1月まで開発・管理がされていることを確認しています。JSONを読み書きする最低限の機能を提供していて、例外処理などについては扱われていません(2013年3月執筆時)。

MiniJSONはUnityのForumないし、GitHubからダウンロードすることができます

ライセンスや配布の形態から非常に使いやすいJSONライブラリだと言えます。フォーラムの投稿先を見る限りiOS向けの出力などでも利用できるようですし、コンパクトなこともあって一定のユーザを確保しているようです。一方で複雑なJSONのあつかいが必要な場合にはJSONFXの利用を推奨しています。

MiniJSONで実現できること

MiniJSONで実現できることを確認しておきます。ここではデコードしか紹介しないためです。

  • JSONのデコード(JSONテキスト → Dictionary)
  • JSONのエンコード(Dictionary → JSONテキスト)

MiniJSONではJSONテキストはDictionaryクラスのインスタンスとして与えられます。また配列はListとしてあつかわれています。MiniJSONではデコードをDeserialize、エンコードをSerializeと称していますが、C#でいうところの(De)Serializeには対応していません。曰く"最低限の機能を詰め込んでいる"ということもあって例外通知機能を持っていません。

JSONFXとは

MiniJSONの開発者などが推奨する高度な機能を持ったJSONをあつかうためのライブラリです。MiniJSONと同様にMITライセンスで利用できるため、ライセンス上の制約はあまりありません。GitHubを見る限り、2010年まで開発・管理されていたようです。

JSONテキストのデコード

 あつかいはそれほど難しくありません。MiniJSONの提供するJson.Deserializeメソッドを利用して、JSONテキストをデコードします。MiniJSONではDictionary形式で結果が返るので、Dictionaryに取得したいキーを引き渡すことで値を取得することができます。取得した値はプログラマが任意にCastする必要があります。ここで注意したいのが、int型はlong型としてあつかわれる点です。

その他の値を例にとったサンプル、エンコードの方法は、MiniJSONのソースコードの冒頭に記載されています。

	// Use this for initialization
	void Start () {

        //仮のJSONテキスト
        string jsonText = "{\"message\":\"SampleText\",\"num\":1}";
        
        //JSONテキストのデコード
        var jsonData = MiniJSON.Json.Deserialize(jsonText) as Dictionary<string,object>;

        //データの取得
        string message = (string)jsonData["message"];
        long num = (long)jsonData["num"];

        //出力する
        print(message +","+ num);

	}