【问题标题】:Unity Json De/serializing nested data [duplicate]Unity Json反/序列化嵌套数据[重复]
【发布时间】: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]这样获得我需要的数据呢?

如果需要更多信息,我很乐意分享,对不起,我是新来的!

【问题讨论】:

标签: c# json deserialization unity5 jsonfx


【解决方案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 刚刚挽救了一条生命
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-22
    • 2019-12-16
    相关资源
    最近更新 更多