


Comment puis-je désérialiser une liste de types de base et dérivés à l'aide de Json.net et conserver leurs types réels ?
Jan 21, 2025 pm 06:35 PMDésérialiser les types dérivés à l'aide de Json.net
Supposons que vous ayez une classe de base Base
et une classe dérivée Derived
, où Derived
hérite de Base
. Vous disposez d'une liste d'objets Base
, qui contient des instances de Base
et Derived
. Lorsque vous désérialisez la représentation JSON de cette liste, vous souhaitez récupérer le type dérivé comme son type réel, pas seulement comme un objet Base
.
Pour y parvenir, Json.net propose une fonctionnalité appelée Gestion des noms de types. En activant cette fonctionnalité et en la transmettant comme paramètre de paramètres aux opérations de sérialisation et de désérialisation, vous pouvez spécifier le type d'objet qui doit être inclus dans le JSON sérialisé.
Base object1 = new Base() { Name = "Object1" }; Derived object2 = new Derived() { Something = "Some other thing" }; List<Base> inheritanceList = new List<Base>() { object1, object2 }; JsonSerializerSettings settings = new JsonSerializerSettings { TypeNameHandling = TypeNameHandling.All }; string Serialized = JsonConvert.SerializeObject(inheritanceList, settings); List<Base> deserializedList = JsonConvert.DeserializeObject<List<Base>>(Serialized, settings);
désérialisé, deserializedList
contiendra Base
et Derived
objets du type correct. Cependant, l'activation de la gestion des noms de types présente un inconvénient : elle inclura les noms de tous les objets et listes dans le JSON sérialisé, ce qui peut ne pas être idéal dans certains cas.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Article chaud

Outils chauds Tags

Article chaud

Tags d'article chaud

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Quels sont les types de valeurs renvoyées par les fonctions du langage C? Qu'est-ce qui détermine la valeur de retour?

Gulc: Cibliothèque C construite à partir de zéro

C Fonction Langue Format de lettre ÉTAPES DE CONVERSION DE CAS

Quelles sont les définitions et les règles d'appel des fonctions du langage C et quelles sont les

Utilisation distincte et partage de phrases

Où est la valeur de retour de la fonction de langue C stockée en mémoire?

Comment fonctionne la bibliothèque de modèle standard C (STL)?

Comment utiliser efficacement les algorithmes du STL (trier, trouver, transformer, etc.)?
