将 JSON 解析为列表 [重复]

Posted

技术标签:

【中文标题】将 JSON 解析为列表 [重复]【英文标题】:Parsing JSON into list [duplicate] 【发布时间】: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;   

【问题讨论】:

【参考方案1】:

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

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

如果您想了解更多信息,请参阅:Serialize and Deserialize Json and Json Array in Unity 和 JSON 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 数据包装的回答.. 这还可以,但是如前所述.. 副本已经提供了更好、更详细的解决方案

以上是关于将 JSON 解析为列表 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何解析这个 JSON 数组?我想解析评论列表数组[重复]

将 Json 表解析为 NSMutableArray [重复]

JSON解析将某些数字转换为其他数字[重复]

从 JSON 获取列表 [重复]

将JSON中的大数字解析为字符串[重复]

Angular 2将JSON对象解析为角度类[重复]