我这个反序列化JSON字符串:如何使用Activator.CreateInstance与列表<T>当反序列化JSON与DataContractJsonSerializer
[{"id":"1"},{"id":"2"},{"id":"3"}]
代表项目的类是:
[DataContract]
public class MyClass
{
public MyClass() {
this._dtcreate = new DateTime();
}
private int _id;
[DataMember(Name = "id")]
public int Id {get;set;}
private DateTime _dtcreate;
}
注意,在MyClass的默认构造函数I为“_dtcreate”设置了默认值。当我反序列化JSON字符串我在反序列化数组没有找到该属性“_dtcreate” evalued
public static T[] DeserializeArray<T>(string json)
{
DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(T[]));
MemoryStream ms = new MemoryStream(Encoding.Unicode.GetBytes(json));
T[] gType = (T[])ser.ReadObject(ms);
return gType;
}
:
所以,我用这个代码进行反序列化JSON转换成T的数组。
我认为DataContractJsonSerializer不使用MyClass的默认构造函数。
我可以使用
T obj = Activator.CreateInstance<T>();
创造属于数组“G-类”的所有对象的实例,使我保证deserialiced我的列表中的所有对象与我的T舱的dafault构造函数创建?
非常感谢!
`DateTime`是一个结构体。你的构造函数完全没用。 – SLaks 2010-11-28 19:08:55