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

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

Susan Sarandon
Freigeben: 2024-12-29 20:10:20
Original
692 Leute haben es durchsucht

How to Deserialize Nested JSON to a Nested Dictionary in C#?

Deserialisieren von verschachteltem JSON in verschachteltes Wörterbuch in C

Wenn Sie mit verschachtelten JSON-Objekten arbeiten, möchten Sie diese möglicherweise in ein Dictionary deserialisieren. Dabei entspricht jedes Schlüssel-Wert-Paar einem Eigenschafts-Wert-Paar im JSON-Objekt. Allerdings deserialisiert System.Text.Json standardmäßig alle Objekte in JsonElement-Objekte, die möglicherweise nicht die gewünschten C#-Typen bereitstellen.

Benutzerdefinierter JsonConverter

Um die richtigen C#-Typen zu erhalten, müssen Sie erstellen ein benutzerdefinierter JsonConverter. Der folgende Konverter verarbeitet alle JSON-Werttypen und konvertiert sie in die entsprechenden C#-Typen:

public class ObjectAsPrimitiveConverter : JsonConverter<object>
{
    ...

    public override object Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
    {
        switch (reader.TokenType)
        {
            // Handle null, boolean, string, and number types.

            case JsonTokenType.StartArray:
                // Handle arrays.

            case JsonTokenType.StartObject:
                // Handle objects.

            default:
                throw new JsonException("Unknown token");
        }
    }
}
Nach dem Login kopieren

Verwenden des Konverters

Um den benutzerdefinierten Konverter zu verwenden, geben Sie ihn in Ihren Deserialisierungsoptionen an:

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

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

Hinweise

  • JSON kann Zahlen mit beliebiger Genauigkeit und Größe darstellen, während Für primitive numerische .Net-Typen gelten Einschränkungen. Sie können konfigurieren, ob nicht unterstützte Zahlen als JsonElements zurückgegeben werden oder Ausnahmen ausgelöst werden.
  • Sie können den Konverter so anpassen, dass er für Gleitkommazahlen und Dictionary Doppel- oder Dezimalzahlen zurückgibt. oder ExpandoObject für JSON-Objekte, je nach Wunsch.

Das obige ist der detaillierte Inhalt vonWie deserialisiere ich verschachteltes JSON in ein verschachteltes Wörterbuch 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