我這個反序列化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