C# Unity Json反序列化/序列化嵌套数据

C# Unity Json反序列化/序列化嵌套数据,c#,json,deserialization,unity5,jsonfx,C#,Json,Deserialization,Unity5,Jsonfx,请帮帮我!我试图从一个json文件中读取一大块数据,大部分数据是一个列表!我不知道如何反序列化它 所以我找到了这个指南,并使用JsonFX和他一样做了 它帮助我反序列化除列表之外的所有其他我需要的信息 下面是一个json文件的示例,请记住我将其简化了十倍,因为这是一个巨大的数据集 { "name": "Croissant", "price": 60, "foo": [{ "poo": [1, 2] }, {

请帮帮我!我试图从一个json文件中读取一大块数据,大部分数据是一个列表!我不知道如何反序列化它

所以我找到了这个指南,并使用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中,单击generate,它将为您提供符合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; }
}
公共类Foo
{
公共列表poo{get;set;}
}
公共类根对象
{
公共字符串名称{get;set;}
公共整数价格{get;set;}
公共列表foo{get;set;}
公共列表重要数据{get;set;}
}
然后,我个人使用NewtonSofts Json.net来转换Json,例如:;

使用Newtonsoft.Json;
字符串json=File.ReadAllText(“path\to\File.json”);
RootObject myRootObject=JsonConvert.DeserializeObject(json);

您可以使用示例数据try生成POCO类,这是一个在线工具。Visual Studio 2015及以后版本和VS代码也有类似的菜单项/命令来完成此操作

  • 将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; }
}
公共类Foo
{
公共列表poo{get;set;}
}
公共类根对象
{
公共字符串名称{get;set;}
公共整数价格{get;set;}
公共列表foo{get;set;}
公共列表重要数据{get;set;}
}
VS代码示例:

Visual Studio 2015示例:

您的JSON无效。在这里验证:谢谢你,伙计!我最初考虑使用get和set方法,但在unitydoc上读到jsonutility(我使用的)不支持它,所以我不得不进行调整,但这确实帮了我很大的忙,现在我终于可以达到我想要达到的目标了!我想newtonsoft刚刚救了一条命
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; }
}