Heim >Backend-Entwicklung >C++ >Wie deserialisiere ich JSON mit Newtonsoft JSON.NET in ein „IEnumerable'?

Wie deserialisiere ich JSON mit Newtonsoft JSON.NET in ein „IEnumerable'?

Linda Hamilton
Linda HamiltonOriginal
2025-01-17 13:48:11921Durchsuche

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

Verwenden Sie Newtonsoft JSON.NET, um JSON in IEnumerable zu deserialisieren.

Angenommen, JSON stellt eine Liste von Objekten mit polymorphen Typen dar:

<code>[
  {
    "$id": "1",
    "$type": "MyAssembly.ClassA, MyAssembly",
    "Email": "[email protected]"
  },
  {
    "$id": "2",
    "$type": "MyAssembly.ClassB, MyAssembly",
    "Email": "[email protected]"
  }
]</code>

und abstrakte Basis- und abgeleitete Klassen:

<code>public abstract class BaseClass
{
    public string Email;
}
public class ClassA : BaseClass
{
}
public class ClassB : BaseClass
{
}</code>

JSON in IEnumerable deserialisieren

Um JSON in die IEnumerable zu deserialisieren, führen Sie die folgenden Schritte aus:

  1. TypeNameHandling aktivieren: Legen Sie TypeNameHandling von JsonSerializerSettings auf „All“ fest, um Typinformationen in das deserialisierte JSON aufzunehmen.

    <code> JsonSerializerSettings settings = new JsonSerializerSettings
     {
         TypeNameHandling = TypeNameHandling.All
     };</code>
  2. Serialisiertes JSON: Serialisiert eine Liste von Objekten mithilfe konfigurierter Einstellungen.

    <code> string strJson = JsonConvert.SerializeObject(instance, settings);</code>
  3. Geänderter JSON: Der serialisierte JSON enthält $type-Informationen und der generierte JSON sieht folgendermaßen aus:

    <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>
  4. JSON deserialisieren: Deserialisieren Sie geändertes JSON mithilfe von Einstellungen mit aktiviertem TypeNameHandling in die Basisklasse.

    <code> IEnumerable<BaseClass> obj = JsonConvert.DeserializeObject<IEnumerable<BaseClass>>(strJson, settings);</code>

Indem Sie diese Schritte befolgen, können Sie JSON erfolgreich in IEnumerable deserialisieren, einschließlich Objekten mit polymorphen Typen.

Das obige ist der detaillierte Inhalt vonWie deserialisiere ich JSON mit Newtonsoft JSON.NET in ein „IEnumerable'?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn