128 votes

Json.net sérialiser/désérialiser des types dérivés ?

json.net (newtonsoft)
Je regarde à travers la documentation, mais je ne peux pas trouver quoi que ce soit à ce sujet ou la meilleure façon de le faire.

Maintenant, j’ai des objets dérivés dans la liste sérialisée. Comment désérialiser la liste et récupérer des types dérivés ?

117voto

Menno Gouw Points 872

Vous devez activer la gestion des noms de types et la passer au (dé)sérialiseur en tant que paramètre de paramètres.

Cela entraînera une désérialisation correcte des classes dérivées. Un inconvénient est qu’il nommera tous les objets que vous utilisez, en tant que tel, il nommera la liste dans laquelle vous placez les objets.

33voto

rzippo Points 418

Étant donné que la question est si populaire, il peut être utile d’ajouter sur ce qu’il faut faire si vous souhaitez contrôler le nom de la propriété de type et sa valeur.

Le long chemin consiste à écrire des s personnalisés `` pour gérer la (dé)sérialisation en vérifiant et en définissant manuellement la propriété type.

Un moyen plus simple consiste à utiliser JsonSubTypes, qui gère tous les attributs réutilisables via :

9voto

Dmitry Points 122

Utilisez ce JsonKnownTypes, c’est une façon très similaire d’utiliser, il suffit d’ajouter un discriminateur à json:

Maintenant, lorsque vous sérialisez l’objet dans json sera ajouté `` avec et valeur et il sera utilisé pour ```` désérialiser

Exemple de liste sérialisée :

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