Newtonsoft.Jsonをバージョン4.0.8で使用していて、WebAPIで使用しようとしています。だから私はJSONをデシリアライズしたかった
JsonConvert.DeserializeObject<AClass>(jsonString);
これは、このクラスにプロパティとしてディクショナリを追加し、それを逆シリアル化するまで機能します。
json文字列は次の形式です
{
"Date":null,
"AString":"message",
"Attributes":[
{"Key":"key1","Value":"value1"},
{"Key":"key2","Value":"value2"}
],
"Id":0,
"Description":"...
}
タイプの逆シリアル化例外が次のJsonSerializationException
メッセージで発生した場合:「JSON配列をタイプ'System.Collections.Generic.Dictionary`2 [System.String、System.String]'に逆シリアル化できません。」
私はここで何が間違っているのですか?
UPDATE1:JSON.NET でシリアル化すると、辞書として次のようになります。
Attributes":{"key1":"value1","key2":"value2"}
WebApiはJson.Netとは別の方法でオブジェクトを逆シリアル化するようです。サーバー側私は暗黙の逆シリアル化のために次の行を使用します:
return new HttpResponseMessage<AClass>(object);
UPDATE2: 回避策として、次の回線サーバー側に移動しました。
return new HttpResponseMessage<string>(JsonConvert.SerializeObject(license).Base64Encode());
Json.Netサーバー側で変換し、base64でエンコードされた文字列として転送します。したがって、Json.Netは独自の形式を逆シリアル化できます。
しかし、それでも私が望んでいることではないので、それ以上の提案はありますか?