Unity Json反/序列化嵌套数据[重复]
Posted
技术标签:
【中文标题】Unity Json反/序列化嵌套数据[重复]【英文标题】:Unity Json De/serializing nested data [duplicate] 【发布时间】:2017-07-21 04:56:32 【问题描述】:请帮助我!我正在尝试从 json 文件中读取大量数据,并且大部分数据是列表列表!我不知道如何反序列化它!
所以我找到了这个指南,并像他一样使用 JsonFX http://www.raybarrera.com/2014/05/18/json-deserialization-using-unity-and-jsonfx/
它帮助我反序列化除列表列表之外的所有其他信息。
以下是 json 文件的示例,请记住我将其简化了十倍,因为这是一个巨大的数据集!
"name": "Croissant",
"price": 60,
"foo": [
"poo": [1, 2]
,
"poo": [3, 4]
],
"importantdata": [
[
0,
1,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0
],
[
1,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0
]
]
那么我怎样才能把它变成一个对象并像myObject.importantdata[n]
这样获得我需要的数据呢?
如果需要更多信息,我很乐意分享,对不起,我是新来的!
【问题讨论】:
您的 JSON 无效。在此处验证:jsonformatter.curiousconcept.com 【参考方案1】:您可以使用您的示例数据生成 POCO 类,试试http://json2csharp.com/,这是一个在线工具。 Visual Studio 2015 和 VS code 也有类似的菜单项/命令来完成此操作。
在那里粘贴你的 json 字符串 您将获得所需的所有 POCO 课程。为您的案例自动生成的结果是:
public class Foo
public List<int> poo get; set;
public class RootObject
public string name get; set;
public int price get; set;
public List<Foo> foo get; set;
public List<List<int>> importantdata get; set;
VS 代码示例:
Visual Studio 2015 示例:
【讨论】:
【参考方案2】:在这种情况下,通常最好使用http://json2csharp.com/等网站
粘贴到您的 JSON 中,单击生成,它将为您提供符合 JSON 结构的 C# 类列表。
在这种情况下,它给了我
public class Foo
public List<int> poo get; set;
public class RootObject
public string name get; set;
public int price get; set;
public List<Foo> foo get; set;
public List<List<int>> importantdata get; set;
然后我个人使用 NewtonSofts Json.net 来转换 JSON 格式,例如这样; http://www.newtonsoft.com/json
using Newtonsoft.Json;
string json = File.ReadAllText("path\to\file.json");
RootObject myRootObject = JsonConvert.DeserializeObject<RootObject>(json);
【讨论】:
谢谢伙计!我最初在考虑使用 get 和 set 方法,但是在 unitydoc 上读到 jsonutility(我使用的)不支持它,所以我不得不适应,但这确实对我有很大帮助,现在我终于可以达到我想要的了到达!我认为 newtonsoft 刚刚挽救了一条生命以上是关于Unity Json反/序列化嵌套数据[重复]的主要内容,如果未能解决你的问题,请参考以下文章