Maison > développement back-end > C++ > Comment Json.net peut-il gérer la sérialisation et la désérialisation des types dérivés ?

Comment Json.net peut-il gérer la sérialisation et la désérialisation des types dérivés ?

Barbara Streisand
Libérer: 2025-01-21 18:28:10
original
952 Les gens l'ont consulté

How Can Json.net Handle Serializing and Deserializing Derived Types?

Sérialisation et désérialisation des types dérivés dans Json.NET (Newtonsoft)

Json.NET offre une flexibilité dans la sérialisation et la désérialisation de structures de données complexes. Lorsqu'il s'agit de types dérivés, il est crucial de conserver les informations de type pendant la sérialisation afin qu'elles soient correctement désérialisées.

Json.NET implémente cette fonctionnalité via l'attribut JsonSerializerSettings de l'objet TypeNameHandling. En définissant cette propriété sur All, Json.NET inclura le nom du type dans la sortie sérialisée.

Par exemple, considérons les classes de base et dérivées suivantes :

public class Base
{
    public string Name;
}

public class Derived : Base
{
    public string Something;
}
Copier après la connexion

Pour sérialiser et désérialiser les types dérivés :

// 序列化
var object1 = new Base() { Name = "Object1" };
var object2 = new Derived() { Something = "Some other thing" };
var inheritanceList = new List<Base>() { object1, object2 };

JsonSerializerSettings settings = new JsonSerializerSettings { TypeNameHandling = TypeNameHandling.All };
string serialized = JsonConvert.SerializeObject(inheritanceList, settings);

// 反序列化
var deserializedList = JsonConvert.DeserializeObject<List<Base>>(serialized, settings);
Copier après la connexion

Avec cette approche, Json.NET préserve les informations de type, permettant ainsi la désérialisation réussie des types dérivés. Cependant, il est important de noter que la sortie sérialisée contiendra les types associés aux objets et toutes les listes utilisées pour les contenir.

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!

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