使用DataContractJsonSerializer反序列化对象并将其映射到列表

时间:2014-09-05 23:49:31

标签: c# json serialization

我已经知道如何使用DataContractJsonSerializer反序列化JSON数组,但现在我有一个JSON 对象,它有一个名为items的键,值为array

例如,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 个答案:

答案 0 :(得分:1)

我认为你错误地建模了你的类型,数组是根对象中的属性。试试这种方式:

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

    [DataMember]
    public List<int> items;
}