使用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可以做得更容易,请给我一些提示。
我认为您对类型的建模不正确,数组是根对象中的一个属性。试试这个方法:
[DataContract]
public class MyObject
{
[DataMember]
public string name;
[DataMember]
public List<int> items;
}