首页 > 解决方案 > 将 JSON 解析为列表

问题描述

所以我试图将 JSON 数据解析为列表/数组,但有点卡在这样的格式上。我对 JSON 比较陌生,所以我不太擅长处理这些东西

这是我的代码:

void processJsonData(string _url)
{
    jsonDataClass jsnData = JsonUtility.FromJson<jsonDataClass>(_url); //_url is based on the Json text below
    Debug.Log(jsnData.data);
}

我使用这段代码来查看它是否设法从中获取数据,但 它显示了这样的错误

JSON 看起来像这样:

[{"country":"Malaysia","sales":9244},
{"country":"Singapore","sales":3103},
{"country":"Japan","sales":1755},
{"country":"China","sales":7835},
{"country":"United States","sales":2755},
{"country":"United Kingdom","sales":8611},
{"country":"Australia","sales":3877}]

我的jsonDataClass样子是这样的:

using System.Collections;
using System.Collections.Generic;
using System;
    
[Serializable]
public class jsonDataClass
{
    public List<basicData> data;    
}

[Serializable]
public class basicData
{ 
    public string country;
    public float sales;   
}

标签: c#jsonunity3d

解决方案


更新的答案: 显然在 Unity 中,您不能使用内置的JsonUtility直接反序列化集合/列表/数组(感谢@derHugo 提供的信息),如果您正在寻找快速且可能很脏的解决方案,请使用以下代码:

List<basicData> jsnData = JsonUtility.FromJson<List<basicData>>("{\"data\":" + _url + "}");

如果您想了解更多信息,请参阅:Serialize and Deserialize Json and Json Array in Unity and JSON Serialization


推荐阅读