Unity 3d - 麻烦反序列化Json

时间:2018-02-10 17:21:51

标签: c# arrays json list

所以,我有一个包含两个类成员的Json文件,如下所示:

{
"Item": 
 [

    {
        "itemID": 1,
        "name": "Apple",
        "description": "fluff",
        "value": 2,
        "weight": 50,
        "quantity": 5,
        "type": "Craftable",
        "favourited": false,
        "rt": null
    },
    {
        "itemID": 2,
        "name": "Star Shard",
        "description": "fluff",
        "value": 2,
        "weight": 50,
        "quantity": 5,
        "type": "Craftable",
        "favourited": false,
        "rt": null
    }
] }

我尝试在运行时将它解析为C#中的列表/数组/或该类的成员,但它失败了。

以下是c#中的代码:

[System.Serializable]

公共类Item_Pickup:MonoBehaviour {     public string filepath;

public class Item
{

    public int itemID;
    public string name;
    public string description;
    public int value;
    public int weight;
    public int quantity;
    public string type;
    public bool favourited;
    public RectTransform rt;

    public static Item CreateFromJson(string jsonstring)
    {
        return JsonUtility.FromJson<Item>(jsonstring);
    }
    void start() 
    {

        filepath = Path.Combine(Application.streamingAssetsPath, "Json1.json");
        StreamReader Test = new StreamReader(filepath);
        string e = Test.ReadToEnd().Trim();
        Item[] items = JsonUtility.FromJson<Item[]>(e);

        foreach(var item in items)
        {
        print(item.name);
        //returns null, the list contains no data. 
        }
    } }

上面的代码为数组返回null值,因此它似乎没有正确读取json。

如果我将json设置为包含一个类成员而不是数组的一部分,我可以在运行时轻松读取该类并将其分配给c#脚本中的类。

我是否遗漏了如何正确读取数组内多个类成员的json文件的基本内容?我查看了Newtonsoft,但似乎当前版本的Unity不支持。

1 个答案:

答案 0 :(得分:0)

我认为问题出在RectTransform上,Json不支持它,因此无法确定何时进行脱盐。

尝试制作vector3