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反/序列化嵌套数据[重复]的主要内容,如果未能解决你的问题,请参考以下文章

使用嵌套对象中的属性反序列化 JSON [重复]

从 JSON 反序列化重复字典

Unity从服务器反序列化[重复]

重复序列化和反序列化创建重复项

unity含枚举类型json数据的序列化和反序列化

unity含枚举类型json数据的序列化和反序列化