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 ?
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 :
<code class="language-csharp">public class Base { public string Name; } public class Derived : Base { public string Something; }</code>
Pour sérialiser et désérialiser les types dérivés :
<code class="language-csharp">// 序列化 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);</code>
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!