Maison > développement back-end > C++ > Comment sérialiser et désérialiser les types dérivés en C# avec Json.net ?

Comment sérialiser et désérialiser les types dérivés en C# avec Json.net ?

Mary-Kate Olsen
Libérer: 2025-01-21 18:41:08
original
658 Les gens l'ont consulté

How to Serialize and Deserialize Derived Types in C# with Json.net?

Sérialiser et désérialiser les types dérivés à l'aide de Json.net

Json.net (Newtonsoft) nécessite une gestion spéciale pour sérialiser et désérialiser correctement les types dérivés lors de l'utilisation de l'héritage polymorphe en C#. Cet article explique comment procéder en activant la gestion des noms de types.

Question

Considérez la hiérarchie de classes suivante :

<code class="language-csharp">public class Base
{
    public string Name;
}
public class Derived : Base
{
    public string Something;
}</code>
Copier après la connexion

Désormais, si vous essayez de désérialiser une chaîne JSON contenant une liste d'objets de base, mais qu'elle contient en fait des objets dérivés, vous ne pourrez pas récupérer les informations de type dérivé. Comment résoudre ce problème ?

Réponse

Json.net fournit l'option TypeNameHandling, qui permet la sérialisation et la désérialisation des noms de types. Pour utiliser cette fonctionnalité :

  1. Créez un objet JsonSerializerSettings et définissez TypeNameHandling sur TypeNameHandling.All.
  2. Passez cet objet de paramètres en tant que paramètre aux méthodes SerializeObject et DeserializeObject.

Voici un exemple :

<code class="language-csharp">// 序列化
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);</code>
Copier après la connexion

Cette approche garantit que Json.net préserve les informations de type pendant la sérialisation et les restaure pendant la désérialisation, permettant ainsi la restauration correcte des types dérivés.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal