チラ裏Unity

主にUnityについての備忘録ですが誰か様の為になれば

UnityでJSONレスポンスを読み込む

サーバから返されるJSON形式のレスポンスをUnityでパースするサンプル

 

JsonFxのインストール

  1. http://www.jsonfx.net/download/ にアクセス
  2. JSON Serialization Library > JsonFx v1.x > Strongly-Signed Assemblies
  3. JsonSerializer_1.4.1003.3007_NetFx2.zip をダウンロード
  4. zipを展開してJsonFx.Json.dllをAssets/Pluginsにコピー

自分の環境(Unity4.3.3f1 Mono4.0.1)で正しく動くdllはこの組み合わせのみでした

 

JSON形式のレスポンスを返すURLを準備

http://127.0.0.1:8000/debug/sample/ で以下のJSON形式のレスポンスを返す

{
    "name": "foo",
    "age": 24,
    "weight": 55.8,
    "married": true,
    "birthday": "1990-08-30 03:38:13",
    "friends": [
        {
            "name": "bar",
            "age": 25,
            "weight": 50.2,
            "married": false,
            "birthday": "1989-04-01 15:02:47"
        }
    ]
}

 

JsonFxでパースしてデシリアライズ

UnityのスクリプトからJSONを読み込む

using UnityEngine;
using JsonFx;
using System;
using System.Collections;
using System.Collections.Generic;

public class JSONLoader : MonoBehaviour {
    IEnumerator Start () {
        WWW www = new WWW("http://127.0.0.1:8000/debug/sample/");
        yield return www;

        Person person = JsonFx.Json.JsonReader.Deserialize<Person>(www.text);
    }
}

public class Person {
    public string name;
    public int age;
    public float weight;
    public bool married;
    public DateTime birthday;
    public List<Person> friends;
}

 

まとめ

パーサとしてMiniJSONという選択肢もありますが、パース後にデシリアライズまでやってくれるJsonFxを今回は選択