いんでぃーづ

ゲームいろいろ、いろいろ自由

UnityでJSONを扱う [C#]

最近は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


“Unity” and Unity logos are trademarks or registered trademarks of Unity Technologies or its affiliates in the U.S. and elsewhere, and are used under license.


免責事項

当サイトの広告バナー、リンクによって提供される情報、サービス内容について、当サイトは一切の責任を負いません。

また、当サイトの情報を元にユーザ様が不利益を被った場合にも、当サイトは一切の責任を負いません。

すべて自己責任でお願いします。