【问题标题】:Parsing JSON into list [duplicate]将 JSON 解析为列表 [重复]
【发布时间】:2021-09-05 16:37:11
【问题描述】:

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

这是我的代码:

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

我使用这段代码来查看它是否设法从中获取数据,但是 it shows the error like this

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# json unity3d


    【解决方案1】:

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

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

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

    【讨论】:

    • 试了第一个,还是一样的错误,有没有其他办法?还是除了更改 json 之外我无能为力?
    • 我对 Unity 不熟悉,但我也看到了这个解决方案:JsonUtility.FromJson&lt;List&lt;basicData&gt;&gt;("{\"data\":" + _url+ "}");
    • 第一个解决方案(也是最后一个)在 Unity 中不起作用(请参阅JSON Serialization -> Supported Types).. 您不能使用内置的 JsonUtility 直接反序列化集合.. 而不是回答重复答案的解决方案,而不是实际投票以重复关闭问题
    • @derHugo 我没有从另一个答案/来源复制我的答案,我不熟悉 Unity,我只是基于 C# 发布我的想法,正如您在编辑历史中看到的那样,我在发布我的答案后约 10 分钟添加了相关问题的链接。
    • 是的,所以那时您知道有一个重复的问题,其中包含很多 kfoe 和更详细的答案;)不过,特别是如果您不熟悉 Unity API:The Serialization of不支持List&lt;TT[] 之类的东西.. 它只是错误 并且具有误导性;)=> 这会减少您对JSON 数据包装的回答.. 这还可以,但是如前所述.. 副本已经提供了更好、更详细的解决方案
    猜你喜欢
    • 1970-01-01
    • 2015-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-11
    • 2023-03-31
    • 2021-11-14
    相关资源
    最近更新 更多