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
Freigeben: 2025-01-08 15:27:40
Original
989 Leute haben es durchsucht

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:

<code class="language-csharp">public static TValue? Deserialize<TValue>(this JsonDocument document, JsonSerializerOptions? options = null);
public static object? Deserialize(this JsonDocument document, Type returnType, JsonSerializerOptions? options = null);</code>
Nach dem Login kopieren

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

<code class="language-csharp">var myClass = jDoc.RootElement.GetProperty("SomeProperty").Deserialize<MyClass>();</code>
Nach dem Login kopieren

.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:

<code class="language-csharp">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);
    }
}</code>
Nach dem Login kopieren

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!

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