Maison > développement back-end > C++ > Comment désérialiser des collections d'instances d'interface avec JSON.NET ?

Comment désérialiser des collections d'instances d'interface avec JSON.NET ?

Mary-Kate Olsen
Libérer: 2025-01-06 07:08:41
original
541 Les gens l'ont consulté

How to Deserialize Collections of Interface Instances with JSON.NET?

Désérialisation de collections d'instances d'interface

Problème :

Lorsque vous essayez de désérialiser une collection de instances d'interface utilisant JSON.NET, l'erreur "Impossible de créer une instance de type ITestInterface. Le type est un interface ou classe abstraite et ne peut pas être instancié" se produit.

Solution :

Utilisation de la gestion des noms de types :

JSON. NET fournit un mécanisme appelé « Type Name Handling » pour gérer la désérialisation des instances d’interface. En spécifiant la propriété TypeNameHandling de l'objet JsonSerializerSettings à TypeNameHandling.Objects, JSON.NET sérialisera le nom de type de l'implémentation de l'interface avec les données JSON.

Pendant la désérialisation, JSON.NET utilisera le nom de type spécifié. pour créer l'instance appropriée de l'implémentation de l'interface. Le nom d'assembly du type peut également être spécifié pour une désérialisation plus précise en définissant la propriété TypeNameAssemblyFormat sur FormatterAssemblyStyle.Simple.

Code Exemple :

Sérialisation :

string serializedJson = JsonConvert.SerializeObject(objectToSerialize, Formatting.Indented, new JsonSerializerSettings
{
    TypeNameHandling = TypeNameHandling.Objects,
    TypeNameAssemblyFormat = FormatterAssemblyStyle.Simple
});
Copier après la connexion

Désérialisation :

var deserializedObject = JsonConvert.DeserializeObject<ClassToSerializeViaJson>(serializedJson, new JsonSerializerSettings
{
    TypeNameHandling = TypeNameHandling.Objects
});
Copier après la connexion

En utilisant la gestion des noms de types , JSON.NET peut désérialiser efficacement des collections d'instances d'interface, garantissant ainsi que les implémentations correctes sont créées.

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