J'utilise Newtonsoft.Json avec la version 4.0.8 et j'essaie de l'utiliser avec l'API Web. donc je voulais désérialiser JSON avecDeserialize Dictionary avec JSON.NET
JsonConvert.DeserializeObject<AClass>(jsonString);
Cela fonctionne jusqu'à ce que j'ajouté un dictionnaire en tant que propriété à cette classe et je voulais désérialiser.
La chaîne JSON est sous forme de
{
"Date":null,
"AString":"message",
"Attributes":[
{"Key":"key1","Value":"value1"},
{"Key":"key2","Value":"value2"}
],
"Id":0,
"Description":"...
}
Lorsque désérialisation exception de type JsonSerializationException
avec le message occures: "ne peut désérialiser tableau JSON en type « System.Collections.Generic.Dictionary`2 [Système .String, System.String] '. "
Qu'est-ce que je fais de mal ici?
Update1: Lors de la sérialisation avec JSON.NET je reçois ce qui suit pour le dictionnaire:
Attributes":{"key1":"value1","key2":"value2"}
Il semble que WebAPI désérialise l'objet d'une autre manière que Json.Net serait. côté serveur-je utiliser la ligne suivante pour désérialisation implicite:
return new HttpResponseMessage<AClass>(object);
MAJ2: Pour contourner ce problème, je suis maintenant à suivre côté serveur en ligne. Je le convertis avec le côté serveur Json.Net et le transfère comme chaîne encodée en base64. Json.Net peut donc désérialiser son propre format.
Mais ce n'est toujours pas ce que je veux, donc y a-t-il d'autres suggestions?
Qu'est-ce que JSON obtenez-vous si vous sérialisez la classe? – Rawling
Merci pour votre réponse rapide. J'ai mis à jour ma question en conséquence. – dasheddot
Sauf s'il existe une option sur l'API Web ou sur Newtonsoft pour gérer les dictionnaires de la manière "opposée", je suggère simplement d'utiliser la même bibliothèque à chaque extrémité (serialize/deserialize) si cela est possible. – Rawling