Heim > Backend-Entwicklung > C++ > Wie deserialisiere ich verschachteltes JSON in ein verschachteltes Wörterbuch mit benutzerdefinierter Typzuordnung in C#?

Wie deserialisiere ich verschachteltes JSON in ein verschachteltes Wörterbuch mit benutzerdefinierter Typzuordnung in C#?

Patricia Arquette
Freigeben: 2024-12-30 18:13:09
Original
1008 Leute haben es durchsucht

How to Deserialize Nested JSON to a Nested Dictionary with Custom Type Mapping in C#?

Verschachteltes JSON in verschachteltes Wörterbuch deserialisieren mit benutzerdefinierter JSON-Typzuordnung

Deserialisieren von JSON-Objekten in ein verschachteltes Wörterbuch ist eine häufige Aufgabe, aber die Standard-Deserialisierung von System.Text.Json führt häufig dazu, dass alle verschachtelten Objekte als JsonElement-Instanzen dargestellt werden. Um eine spezifischere Typzuordnung zu erreichen, ist ein benutzerdefinierter JSON-Konverter erforderlich.

Benutzerdefinierter JSON-Konverter für die Typzuordnung

Der folgende benutzerdefinierte JSON-Konverter mit dem Namen ObjectAsPrimitiveConverter liefert das Gewünschte Typzuordnung:

  • String -> Zeichenfolge
  • Zahl -> int/double
  • Objekt -> Dictionary

Konverterimplementierung

Die Lese- und Schreibmethoden des Konverters führen die benutzerdefinierte Zuordnung durch:

  • Lesen:

    • Parst das eingehende JSON-Token basierend auf seinem Typ.
    • Gibt einen bestimmten .Net-Typ (String, Int, Double, Dictionary usw.) zurück oder löst eine Ausnahme aus, wenn der Typ nicht analysiert werden kann.
  • Schreiben:

    • Behandelt Objekttypen durch Schreiben eines leeren JSON-Objekts, wie für die benutzerdefinierte Konvertierung erforderlich.

Verwendung des Konverters

Zur Verwendung des benutzerdefinierten Konverters , es muss während der Deserialisierung zu den JsonSerializerOptions hinzugefügt werden:

var options = new JsonSerializerOptions
{
    Converters = { new ObjectAsPrimitiveConverter() },
    WriteIndented = true,
};

dynamic d = JsonSerializer.Deserialize<dynamic>(json, options);
Nach dem Login kopieren

Konfiguration Optionen

Der Konverter bietet mehrere Konfigurationsoptionen:

  • FloatFormat: Gibt an, ob Gleitkommazahlen als Doppel- oder Dezimalzahlen geparst werden sollen.
  • UnknownNumberFormat: Bestimmt, wie mit Zahlen umgegangen wird, die nicht in a geparst werden können .Net-Primitivtyp.
  • ObjectFormat: Konfiguriert den Ausgabetyp für JSON-Objekte entweder als Dictionary oder ein ExpandoObject.

Beispiel-Geige

Eine Live-Demonstration finden Sie hier: [Beispiel-Geige](https://dotnetfiddle.net/tD9pPI)

Das obige ist der detaillierte Inhalt vonWie deserialisiere ich verschachteltes JSON in ein verschachteltes Wörterbuch mit benutzerdefinierter Typzuordnung in C#?. 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