将 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<List<basicData>>("\"data\":" + _url+ "");
第一个解决方案(也是最后一个)在 Unity 中不起作用(请参阅JSON Serialization -> Supported Types).. 您不能使用内置的 JsonUtility 直接反序列化集合.. 而不是回答重复答案的解决方案,而不是实际投票以重复关闭问题
@derHugo 我没有从另一个答案/来源复制我的答案,我不熟悉 Unity,我只是基于 C# 发布我的想法,正如您在编辑历史中看到的那样,我在发布我的答案后约 10 分钟添加了相关问题的链接。
是的,所以那时您知道有一个重复的问题,其中包含很多 kfoe 和更详细的答案;)不过,特别是如果您不熟悉 Unity API:The Serialization of不支持List<T
或T[]
之类的东西.. 它只是错误 并且具有误导性;)=> 这会减少您对JSON 数据包装的回答.. 这还可以,但是如前所述.. 副本已经提供了更好、更详细的解决方案以上是关于将 JSON 解析为列表 [重复]的主要内容,如果未能解决你的问题,请参考以下文章