Heim >Backend-Entwicklung >C++ >Wie konvertiere ich ein JsonElement in ein Objekt in .NETs System.Text.Json?

Wie konvertiere ich ein JsonElement in ein Objekt in .NETs System.Text.Json?

Barbara Streisand
Barbara StreisandOriginal
2025-01-08 15:27:401103Durchsuche

In .NET Core 3 und höher eine Methode zum Konvertieren von JsonElement in ein Objekt

In diesem Artikel wird erläutert, wie Sie System.Text.Json mithilfe von JsonElement in .NET Core 3 und höher in ein Objekt konvertieren. System.Text.Json ist die neue JSON-Verarbeitungsbibliothek in .NET Core 3.0 und enthält kein Äquivalent der Json.NET-Methode in ToObject(), die die Konvertierung von JToken in eine Klasse ermöglicht.

.NET 6 und höher:

Ab .NET 6 bietet JsonSerializer Erweiterungsmethoden zur direkten Deserialisierung von JsonElement oder JsonDocument:

public static TValue? Deserialize<TValue>(this JsonDocument document, JsonSerializerOptions? options = null);
public static object? Deserialize(this JsonDocument document, Type returnType, JsonSerializerOptions? options = null);

Mit diesen Methoden können Sie Objekte von JsonElement einfach deserialisieren:

var myClass = jDoc.RootElement.GetProperty("SomeProperty").Deserialize<MyClass>();

.NET 5 und früher:

In früheren Versionen von .NET waren diese Methoden nicht verfügbar. Die Problemumgehung besteht darin, den JSON in einen Zwischenbyte-Puffer zu schreiben:

public static partial class JsonExtensions
{
    public static T ToObject<T>(this JsonElement element, JsonSerializerOptions options = null)
    {
        var bufferWriter = new ArrayBufferWriter<byte>();
        using (var writer = new Utf8JsonWriter(bufferWriter))
            element.WriteTo(writer);
        return JsonSerializer.Deserialize<T>(bufferWriter.WrittenSpan, options);
    }
}

Diese Methode ist leistungsfähiger als die vorherige Konvertierung von JsonElement in eine Zeichenfolge.

Hinweis:

    Freigabe von
  • JsonDocument: JsonDocument verwendet gepoolten Speicher, daher muss er ordnungsgemäß freigegeben werden (es wird empfohlen, die using-Anweisung zu verwenden).
  • Verfügbarkeit neuer Methoden: Neue Deserialisierungserweiterungsmethoden sind in .NET 6.0 Preview RC1 und höher verfügbar.
  • Ähnliche Methoden für
  • JsonNode: Ähnliche Methoden gibt es für den veränderlichen JSON-Dokumentknoten JsonNode.

How to Convert a JsonElement to an Object in .NET's System.Text.Json?

Das obige ist der detaillierte Inhalt vonWie konvertiere ich ein JsonElement in ein Objekt in .NETs System.Text.Json?. 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