30 votes

Est-il possible de faire en sorte que DataContractJsonSerializer sérialise correctement les dictionnaires?

Le DataContractJsonSerializer n'est pas en mesure de sérialiser les Dictionnaires correctement.

Alors que JavaScriptSerializer sérialise les Dictionnaires comme {"abc":"xyz","def":42} par exemple, le DataContractJsonSerializer donne [{"Key":"abc","Value":"xyz"},{"Key":"def","Value":42}] à la place.

C'est vraiment problématique, et je veux savoir comment puis-je sérialiser des objets Dictionary correctement dans mon service WCF. Je suis à la recherche d'une solution qui nécessite moins d'effort.

ref: http://msdn.microsoft.com/en-us/library/bb412170.aspx

C'est la solution de contournement j'ai finalement utilisé pour serilize dictionnaires correctement dans WCF: http://social.msdn.microsoft.com/forums/en-US/wcf/thread/765f1569-0422-4471-8ec2-1d03b2026771

26voto

Josh Points 38617

Malheureusement, cela semble être de par leur conception, selon la section "Collections, dictionnaires et tableaux" à http://msdn.microsoft.com/en-us/library/bb412170.aspx

Toutes les collections, dictionnaires et tableaux sont représentés dans JSON sous forme de tableaux.

8voto

faester Points 6055

Bien que ce sera dans la plupart des cas, provoquer une réécriture majeure et donc ne pas être possible, vous pouvez laisser votre service WCF interface accepter et renvoyer Stream dans ce cas vous pouvez prendre le plein contrôle de la sérialisation. De cette façon, vous pouvez utiliser JavaScriptSerializer, JSON.NET ou ServiceStack.JSON pour effectuer la sérialisation et ces sérialiseurs traite avec les dictionnaires plus manière sensible.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X