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
Freigeben: 2025-01-17 13:48:11
Original
919 Leute haben es durchsucht

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>
Nach dem Login kopieren

und abstrakte Basis- und abgeleitete Klassen:

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

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>
    Nach dem Login kopieren
  2. Serialisiertes JSON: Serialisiert eine Liste von Objekten mithilfe konfigurierter Einstellungen.

    <code> string strJson = JsonConvert.SerializeObject(instance, settings);</code>
    Nach dem Login kopieren
  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>
    Nach dem Login kopieren
  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>
    Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage