Десериализовать словарь с помощью JSON.NET
Я использую Newtonsoft.Json с версией 4.0.8 и пытаюсь использовать его с веб-API. Поэтому я хотел десериализовать JSON с
JsonConvert.DeserializeObject<AClass>(jsonString);
Это работает, пока я не добавил словарь как свойство в этот класс и не хочу десериализовать его.
Строка JSON имеет вид
{
"Date":null,
"AString":"message",
"Attributes":[
{"Key":"key1","Value":"value1"},
{"Key":"key2","Value":"value2"}
],
"Id":0,
"Description":"...
}
При десериализации исключения типаJsonSerializationException
происходит с сообщением: & quot;Cannot deserialize JSON array into type 'System.Collections.Generic.Dictionary`2[System.String,System.String]'.& Quot;
Что я здесь не так делаю?
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 может десериализовать свой собственный формат.
Но это все еще не то, что я хочу, так есть ли еще какие-нибудь предложения?