Maison > développement back-end > C++ > Comment désérialiser JSON en un « IEnumerable » à l'aide de Newtonsoft JSON.NET ?

Comment désérialiser JSON en un « IEnumerable » à l'aide de Newtonsoft JSON.NET ?

Linda Hamilton
Libérer: 2025-01-17 13:48:11
original
919 Les gens l'ont consulté

How to Deserialize JSON into an `IEnumerable` using Newtonsoft JSON.NET?

Utilisez Newtonsoft JSON.NET pour désérialiser JSON en IEnumerable

Supposons que JSON représente une liste d'objets avec des types polymorphes :

<code>[
  {
    "$id": "1",
    "$type": "MyAssembly.ClassA, MyAssembly",
    "Email": "[email protected]"
  },
  {
    "$id": "2",
    "$type": "MyAssembly.ClassB, MyAssembly",
    "Email": "[email protected]"
  }
]</code>
Copier après la connexion

et classes de base abstraites et dérivées :

<code>public abstract class BaseClass
{
    public string Email;
}
public class ClassA : BaseClass
{
}
public class ClassB : BaseClass
{
}</code>
Copier après la connexion

Désérialiser JSON en IEnumerable

Pour désérialiser JSON en IEnumerable, suivez ces étapes :

  1. Activer TypeNameHandling : Définissez TypeNameHandling de JsonSerializerSettings sur All pour inclure les informations de type dans le JSON désérialisé.

    <code> JsonSerializerSettings settings = new JsonSerializerSettings
     {
         TypeNameHandling = TypeNameHandling.All
     };</code>
    Copier après la connexion
  2. JSON sérialisé : Sérialise une liste d'objets à l'aide des paramètres configurés.

    <code> string strJson = JsonConvert.SerializeObject(instance, settings);</code>
    Copier après la connexion
  3. JSON modifié : Le JSON sérialisé contiendra des informations $type, et le JSON généré ressemblera à ceci :

    <code> {
       "$type": "System.Collections.Generic.List`1[[MyAssembly.BaseClass, MyAssembly]], mscorlib",
       "$values": [
         {
           "$id": "1",
           "$type": "MyAssembly.ClassA, MyAssembly",
           "Email": "[email protected]"
         },
         {
           "$id": "2",
           "$type": "MyAssembly.ClassB, MyAssembly",
           "Email": "[email protected]"
         }
       ]
     }</code>
    Copier après la connexion
  4. Désérialiser JSON : Désérialisez le JSON modifié vers la classe de base à l'aide des paramètres avec TypeNameHandling activé.

    <code> IEnumerable<BaseClass> obj = JsonConvert.DeserializeObject<IEnumerable<BaseClass>>(strJson, settings);</code>
    Copier après la connexion

En suivant ces étapes, vous pouvez réussir à désérialiser JSON en IEnumerable, y compris les objets avec des types polymorphes.

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