2014-09-05 89 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

相关问题