我使用版本4.0.8的Newtonsoft.Json並試圖將其與Web API一起使用。 所以我想反序列化JSON與使用JSON.NET反序列化字典
JsonConvert.DeserializeObject<AClass>(jsonString);
這工作,直到我添加了一個字典財產這一類,想反序列化。
JSON字符串是在
{
"Date":null,
"AString":"message",
"Attributes":[
{"Key":"key1","Value":"value1"},
{"Key":"key2","Value":"value2"}
],
"Id":0,
"Description":"...
}
形式當JsonSerializationException
類型的反序列化異常處理消息occures:「無法反序列化JSON數組類型「System.Collections.Generic.Dictionary`2 [系統.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可以反序列化自己的格式。
但它仍然不是我想要的,那麼還有什麼進一步的建議嗎?
你什麼JSON,如果你連載班上? – Rawling
感謝您的快速響應。我相應地更新了我的問題。 – dasheddot
除非在Web API或Newtonsoft上有一個選項來使其以「相反」方式處理字典,否則我只是建議在每一端使用相同的庫(序列化/反序列化)(如果可能的話)。 – Rawling