私はこのjson文字列を逆シリアル化しています:
[{"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のデフォルトのコンストラクターで、「_dtcreate」のデフォルト値を設定していることに注意してください。
したがって、私はこのコードを使用して、jsonをTの配列に逆シリアル化します。
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文字列を逆シリアル化すると、逆シリアル化された配列にプロパティ"_dtcreate"evaluedが見つかりませんでした。
DataContractJsonSerializerはMyClassのデフォルトコンストラクターを使用していないと思います。
使用できますか
T obj = Activator.CreateInstance<T>();
配列「gType」に属するすべてのオブジェクトのインスタンスを作成して、逆シリアル化されたリストのすべてのオブジェクトがTクラスのdafaultコンストラクターで作成されるようにしますか?
どうもありがとう!