2014-09-05 88 views
1

我已經知道如何反序列化使用DataContractJsonSerializer JSON數組,但現在我有一個JSON對象,它有一個叫items鍵和值是array與DataContractJsonSerializer反序列化對象,並將其映射到一個列表

例如,JSON字符串是{ name: "someString", items: [1, 2, 3] }

現在我想知道是否有任何內置的方法來此對象轉換爲從List<T>派生的自定義類,例如下面的類:

[DataContract] // This is not working, you can't apply DataContract attribute to a List<T> 
// [ItemsCollectionIsIn("items")] 
public class MyObject : List<int> 
{ 
    [DataMember] 
    public string name; 
} 

我曾試圖[CollectionDataContract]屬性與其ItemName設置爲"items",但似乎只是DataContractJsonSerializer忽略ItemName財產和串行/從數組對象反序列化到/。

現在我可以在我的類上實現IList<T>並從內部列表返回值,或者我認爲我可以爲JSON對象契約編寫一個類,而另一個從List派生,然後手動填充值,還有更好的方法嗎?

我正在使用Windows Phone LongListSelector,所以我需要一個GroupedList(List<List<T>>)。

或者,如果JSON.Net可以更容易地做到這一點,請給我一些提示。

回答

1

我認爲你不正確地建模你的類型,該數組是一個根對象的屬性。試試這樣:

[DataContract] 
public class MyObject 
{ 
    [DataMember] 
    public string name; 

    [DataMember] 
    public List<int> items; 
} 
+0

我不知道是否有某種方法可以將'items'的內容映射到對象本身。 – 2014-09-06 00:54:51

+0

@SimonChan我真的不知道。無論如何,你可以很容易地用LINQ來提取它。 – 2014-09-06 00:59:44

相關問題