反序列化层次结构的JSON

时间:2012-07-30 21:34:45

标签: c# json deserialization

要反序列化以下Json,我使用了以下类的组合,这样我就可以循环使用四层 但它不起作用

我没有找到任何反序列化这样的json的教程 任何帮助都非常感谢

var myFoo = new JavaScriptSerializer().Deserialize<Commn.foo2>(@"
{""root"":
    {""qss"":[
        {""id"":""d1"",""qss"":[
            {""id"":""qs1-1"",""tp"":""50px"",""ck"":""i"",""dp"":""at""},
            {""id"":""qs1-2"",""tp"":""100px"",""ck"":""i"",""dp"":""at""},
            {""id"":""qs1-3"",""tp"":""150px"",""ck"":""c"",""dp"":""at""},
            {""id"":""qs1-4"",""tp"":""200px"",""ck"":""i"",""dp"":""at""},
            {""id"":""qs1-5"",""tp"":""250px"",""ck"":""c"",""dp"":""at""},
            {""id"":""qs1-6"",""tp"":""300px"",""ck"":""c"",""dp"":""at""},
            {""id"":""qs1-7"",""tp"":""350px"",""ck"":""i"",""dp"":""at""},
            {""id"":""qs1-8"",""tp"":""400px"",""ck"":""i"",""dp"":""at""},
            {""id"":""qs1-9"",""tp"":""450px"",""ck"":""c"",""dp"":""at""},
            {""id"":""qs1-10"",""tp"":""500px"",""ck"":""c"",""dp"":""at""}]
        }

        {""id"":""d2"",""qss"":[
            {""id"":""qs2-1"",""tp"":""50px"",""ck"":""i"",""dp"":""at""},
            {""id"":""qs2-2"",""tp"":""100px"",""ck"":""c"",""dp"":""at""},
            {""id"":""qs2-3"",""tp"":""150px"",""ck"":""c"",""dp"":""at""},
            {""id"":""qs2-4"",""tp"":""200px"",""ck"":""i"",""dp"":""at""},
            {""id"":""qs2-5"",""tp"":""250px"",""ck"":""c"",""dp"":""at""},
            {""id"":""qs2-6"",""tp"":""300px"",""ck"":""c"",""dp"":""at""},
            {""id"":""qs2-7"",""tp"":""350px"",""ck"":""c"",""dp"":""at""},
            {""id"":""qs2-8"",""tp"":""400px"",""ck"":""i"",""dp"":""at""},
            {""id"":""qs2-9"",""tp"":""450px"",""ck"":""c"",""dp"":""at""},
            {""id"":""qs2-10"",""tp"":""500px"",""ck"":""c"",""dp"":""at""}]
        }
    }
}
");

public  class Pages
{
    public string id { get; set; }
    public qss[] children { get; set; }
}

public class qss
{
    public string id { get; set; }
    public string tp { get; set; }
    public string ck { get; set; }
    public string dp { get; set; }
}

/// <summary>
/// Holding the root elemnt
/// </summary>
public class foo2
{
    public qss[] root { get; set; }
}

1 个答案:

答案 0 :(得分:0)

您正在使用的类并不完全映射到JSON文件的属性。 JSON的每个对象(出现在{}之间的对象)和每个数组(出现在[]之间的对象)需要不同的类。每一对,该类的成员。

public class MainObject
{
    public Root root { get; set; }
}

此类包含整个“root”值。 Root的定义是这样的,因为“root”出现在{}之间,整个字符串出现在“root”之后:是它的值。

public class Root
{
    public List<OuterQSS> qss { get; set; }
}

此类保存整个外部“qss”值,该值出现在第二个“qss”(即数组)之前。

public class OuterQSS
{
    public string id { get; set; }
    public List<InnerQSS> qss { get; set; }
}

此类包含“id”值和内部QSS成员的整个数组。

public class InnerQSS
{
    public string id { get; set; }
    public string tp { get; set; }
    public string ck { get; set; }
    public string dp { get; set; }
}

此类包含内部QSS数组中所有甜蜜,甜蜜的数据。

只需替换它的类型

Deserialize<Commn.foo2> 

新主要类的方法

Deserialize<MainObject>
相关问题