2013-06-21 168 views
0

美好的一天JSON的嵌套对象反序列化导致一个空对象

我在尝试使用JavaScriptserializer将JSON对象反序列化为C#类。该对象包含一个嵌套对象。下面是对象的表示:

[{"ObjA":"FOO", 
    "SubObjA":{ 
    "A":0, 
    "B":true, 
    "C":2, 
    "D":0.2 
    }, 
    "ObjB":false, 
    "ObjC":295, 
    }] 

在C#,我创建的类为这些:

public class ClassA 
{ 
    public string ObjA { get; set; } 
    public Collection<SubObjA> SubObjA { get; set; } 
    public bool ObjB { get; set; } 
    public int ObjC { get; set; } 


} 

public class SubObjA 
{ 
    public int A { get; set; } 
    public bool B { get; set; } 
    public int C { get; set; } 
    public decimal D { get; set; } 
} 

当反序列化对象,我看到SubObjA集合不填充(计数= 0 )

var Helper = new JavaScriptSerializer().Deserialize<ClassA[]>(Request["TheJSONIAmDeserializing"]); 

为什么集合不能填充? (标记因为Ajax请求(“”))的

+0

不是实际的课程名称和属性名称,不得不进行更改以遮盖真实的代码 – Eon

+0

在我的版本中,除了集合之外的所有内容都正确填充 – Eon

回答

2

SubObjA在你的例子是一个单一的对象,但在你的班上它是一个集合,所以JSON应该像周围SubObjA

[{"ObjA":"FOO", 
    "SubObjA":[{ 
    "A":0, 
    "B":true, 
    "C":2, 
    "D":0.2 
    }], 
    "ObjB":false, 
    "ObjC":295, 
    }] 

注意括号。

+0

该死的,你是对的。 JSON.Stringify只返回了护腕而不是方括号,因为它目前在集合中填充了1个项目。 – Eon

+0

再次感谢你。无法点击它不工作的原因,一切看起来都是正确的 – Eon