読者です 読者をやめる 読者になる 読者になる

いんでぃーづ

個人でゲーム開発してる上で吸収したモノたち紹介。UnityからGIMPまでなんでも。デザインとかゲーム論まで語っちゃうよ的なアレ。

MENU
{スポンサーリンク}

UnityでJSONを扱う [C#]

Unity C# Tips

最近はJSONを扱うためのクラスが用意されてるんですよねー

JSON文字列からデータを取得する場合

1. データを用意する

今回はWebサーバからJSONを取得してみます。 http://hogehogehoge/hoge.json というアドレスから以下のようなJSONが取得できるとします。

{
  "id" : 1,
  "val" : 0.2345,
  "text" : "JSONてすと"
}

2. データ取得用のクラスや構造体を用意する

以下のような独自クラスを定義。 structでも可。

[System.Serializable]
public class MyJsonData {
    public int id;
    public float val;
    public string text;
}

条件としてはまず Serializable 属性をつけること。 あとJSONのパラメータ名とメンバ名を一致させること。

3. JSON文字列からクラスにデータを入れる

JsonUtility.FromJsonでGO。

public class JSONTest : MonoBehaviour {

    IEnumerator Start () {

        // サーバからJSON文字列取得
        WWW www = new WWW ("http://hogehogehoge/hoge.json");

        yield return www;

        // クラスにデータを取得
        MyJsonData data = JsonUtility.FromJson<MyJsonData> (www.text);

        Debug.Log (
            string.Format("{0} : {1} : {2}",
                data.id, data.val, data.text)
        );
    }
}

クラスや構造体からJSON文字列を書き出す

文字列からクラスに移すときのように、独自定義クラスを使います。

条件は同じく Serializable属性をつける & JSONのパラメータ名とメンバ名を一致させる

そしてJsonUtility.ToJsonを使う。

        MyJsonData data = new MyJsonData();
        data.id = 1000;
        data.val = 234.987f;
        data.text = "シリアライズだよ";

        // JSON文字列にする
        string json = JsonUtility.ToJson (data);
        Debug.Log (json);

f:id:sugar_affordance:20160517182832p:plain

Amazon.co.jpアソシエイト