底辺SE奮闘記

年収300万SEブログ

【Unity・JsonUtility】配列のパースに癖があった件

JsonUtilityの配列パースでハマったのでメモ

環境

  • Unity 2019.3.3f1

前提

下記のようなjsonをパースするとする

{
    "persons":[
        {
            "name":"Yamada"
            "age":10
        },
        {
            "name":"Tanaka",
            "age":20
        }
    ]
}

ダメな例

public class Persons {
    public Person[] persons;
}

public class Person {
    public string name;
    public int age;
}

// 中略
void hogehoge()
{
    var arr = JsonUtility.FromJson<Persons>("json-text");
}

良い例(改変部分のみ)

[System.Serializable]
public class Persons {
    public Person[] persons;
}

[System.Serializable]
public class Person {
    public string name;
    public int age;
}

// 略

ポイントは、[System.Serializable]です。

どこかのサイトでアクセス修飾子がpublicであれば、不要みたいなのを見た気がするのですが、ないとnullが返却されるという自体が発生しました。

配列でない場合は、[System.Serializable]がなくてもパースできてしまうのでハマりました。