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?

questionAnswers(4)

yourAnswerToTheQuestion