我正在使用带有 4.0.8 版本的 Newtonsoft.Json 并尝试将它与 Web API 一起使用。所以我想反序列化 JSON
JsonConvert.DeserializeObject<AClass>(jsonString);
这一直有效,直到我将 Dictionary 作为属性添加到此类并想要反序列化它。
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 可以反序列化自己的格式。
但它仍然不是我想要的,所以他们有什么进一步的建议吗?