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

本文关键字:映射 列表 DataContractJsonSerializer 反序列化 对象 使用 | 更新日期: 2023-09-27 18:20:54

我已经知道如何使用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;
}

我尝试过将ItemName设置为"items"[CollectionDataContract]属性,但似乎DataContractJsonSerializer只是忽略了ItemName属性,并将对象序列化到数组/从数组反序列化对象。

现在我可以在我的类上实现IList<T>,并从内部列表返回值,或者我认为我可以为JSON对象契约编写一个类,另一个从list派生,然后手动填充值,有更好的方法吗?

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

或者,如果JSON.Net可以做得更容易,请给我一些提示。

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

我认为您对类型的建模不正确,数组是根对象中的一个属性。试试这个方法:

[DataContract]
public class MyObject
{
    [DataMember]
    public string name;
    [DataMember]
    public List<int> items;
}