Deserializuj słownik za pomocą JSON.NET
Używam Newtonsoft.Json z wersją 4.0.8 i próbuję go używać z Web API. Chciałem więc sprzeniewierzyć JSON
JsonConvert.DeserializeObject<AClass>(jsonString);
Działa to, dopóki nie dodałem Dictionary jako własności do tej klasy i chciałem go rozszeregować.
Łańcuch json ma postać
{
"Date":null,
"AString":"message",
"Attributes":[
{"Key":"key1","Value":"value1"},
{"Key":"key2","Value":"value2"}
],
"Id":0,
"Description":"...
}
Podczas deserializacji wyjątku typuJsonSerializationException
pojawia się z komunikatem: „Nie można deserializować tablicy JSON do typu „System.Collections.Generic.Dictionary`2 [System.String, System.String]”."
Co ja tu robię źle?
AKTUALIZACJA1: Podczas serializowania za pomocą JSON.NET otrzymuję następujące informacje do słownika:
Attributes":{"key1":"value1","key2":"value2"}
Wygląda na to, że WebApi przekształca obiekt w inny sposób niż Json.Net. Po stronie serwera używam następującej linii do niejawnego deserializacji:
return new HttpResponseMessage<AClass>(object);
UPDATE2: Jako obejście znalazłem się teraz po stronie serwera linii.
return new HttpResponseMessage<string>(JsonConvert.SerializeObject(license).Base64Encode());
Konwertuję go po stronie serwera Json.Net i przesyłam go jako ciąg zakodowany w Base64. Zatem Json.Net może deserializować swój własny format.
Ale to wciąż nie to, czego chcę, więc czy są jakieś dalsze sugestie?