この質問は何度も繰り返し尋ねられていますが、何らかの理由でこれを動作させることができません。DataContractJsonSerializerを使用して単純なJSON配列を逆シリアル化する
単一のメンバーを含むJSONオブジェクトを逆シリアル化する必要があります。文字列の配列:
{"results" : ["a", "b"]}
これは私がにデシリアライズしようとしているクラスです。
public class Whatever {
[DataMember(Name = "results")]
public string[] Results { get; protected set; }
}
そして、これが逆シリアル化方法である:
private static T Deserialize<T>(string json)
{
var instance = Activator.CreateInstance<T>();
using (var ms = new MemoryStream(Encoding.Unicode.GetBytes(json)))
{
var serializer = new DataContractJsonSerializer(instance.GetType());
return (T)serializer.ReadObject(ms);
}
}
Deserialize<Whatever>("{\"results\" : [\"a\", \"b\"]}")
のような呼び出しがあります初期化されたインスタンスWhatever
を返しますが、Results
の配列はnull
のままです。
Whatever
の構造に何か問題がありますか?ああ、これを掲示した後、私はWhatever
にDataContract
属性の装飾を欠落していたことに気づい
あなたは= Activator.CreateInstance() 'VARインスタンスを必要としません;' 'typeof演算(T)' –