Heim > Backend-Entwicklung > C++ > Wie konvertiert man JsonElement effizient in ein .NET-Objekt?

Wie konvertiert man JsonElement effizient in ein .NET-Objekt?

Patricia Arquette
Freigeben: 2025-01-08 15:31:40
Original
773 Leute haben es durchsucht

JsonElement effizient in ein .NET-Objekt konvertieren

System.Text.Json, eingeführt in .NET Core 3.0, bietet eine leistungsstarke JSON-Verarbeitungslösung. Im Gegensatz zu Json.NET fehlte jedoch bis .NET 6 ein direktes Äquivalent zur ToObject-Methode zur bequemen Konvertierung von JsonElement in ein .NET-Objekt.

.NET 6 und höher: Vereinfachte Konvertierung

.NET 6 und spätere Versionen bieten integrierte Erweiterungsmethoden in JsonSerializer, die den Prozess optimieren:

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

Dies ermöglicht eine unkomplizierte Konvertierung:

<code class="language-csharp">using var jDoc = JsonDocument.Parse(jsonString);
var myObject = jDoc.RootElement.GetProperty("propertyName").Deserialize<MyObjectType>();</code>
Nach dem Login kopieren

.NET 5 und früher: Eine praktische Problemumgehung

Für Projekte mit .NET 5 oder früheren Versionen, denen diese praktischen Erweiterungsmethoden fehlen, besteht eine Problemumgehung darin, JsonElement in einen Bytepuffer zu schreiben und dann aus diesem Puffer zu deserialisieren:

<code class="language-csharp">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);
}

public static T ToObject<T>(this JsonDocument document, JsonSerializerOptions options = null)
{
    return document.RootElement.ToObject<T>(options);
}</code>
Nach dem Login kopieren

Diese Methode vermeidet den Aufwand für String- oder Zeichenspannenkonvertierungen und bietet eine effiziente Lösung für ältere .NET-Versionen.

How to Efficiently Convert JsonElement to a .NET Object?

Das obige ist der detaillierte Inhalt vonWie konvertiert man JsonElement effizient in ein .NET-Objekt?. 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