最近は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);
↓