Maison >développement back-end >C++ >Comment puis-je désérialiser des collections d'instances d'interface à l'aide de Json.Net ?

Comment puis-je désérialiser des collections d'instances d'interface à l'aide de Json.Net ?

Linda Hamilton
Linda Hamiltonoriginal
2025-01-06 05:59:48324parcourir

How Can I Deserialize Collections of Interface Instances Using Json.Net?

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

Il est courant de stocker des données sous forme d'instances d'interfaces, comme dans ClassToSerializeViaJson de l'exemple. Cependant, la désérialisation de telles collections peut provoquer des erreurs comme celle mentionnée dans la question.

Solution :

Pour résoudre le problème, Json.Net nécessite une configuration supplémentaire pour activer la désérialisation. d'interface instances.

  1. Sérialisation :

    • Définissez TypeNameHandling sur Objects pour inclure le nom du type dans la charge utile JSON.
    • Utilisez FormatterAssemblyStyle.Simple pour simplifier le nom du type format.
string serializedJson = JsonConvert.SerializeObject(objectToSerialize, Formatting.Indented, new JsonSerializerSettings
{
    TypeNameHandling = TypeNameHandling.Objects,
    TypeNameAssemblyFormat = System.Runtime.Serialization.Formatters.FormatterAssemblyStyle.Simple
});
  1. Désérialisation :

    • Définissez TypeNameHandling sur Objets pour activer le type identification lors désérialisation.
var deserializedObject = JsonConvert.DeserializeObject<ClassToSerializeViaJson>(serializedJson, new JsonSerializerSettings
{
    TypeNameHandling = TypeNameHandling.Objects
});

En implémentant ces paramètres, Json.Net peut désérialiser correctement les collections d'instances d'interface, permettant la récupération de la structure de données d'origine.

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:
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