2013-06-21 171 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