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

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

Linda Hamilton
Linda HamiltonOriginal
2025-01-08 15:37:461025Durchsuche

How to Convert JsonElement to a Strongly-Typed Object in System.Text.Json?

ToObject-äquivalente Methode von System.Text.Json.JsonElement

Konzept

In .NET Core 3 stellt die Json.NET-Bibliothek die ToObject-Methode bereit, mit der JToken-Objekte in stark typisierte Klassen konvertiert werden können. In diesem Artikel wird die entsprechende Methode zum Deserialisieren von JsonElement-Objekten in System.Text.Json untersucht.

Lösung

In .NET 6 und höher:

JsonSerializer hat Erweiterungsmethoden hinzugefügt, um direkt von JsonElement- und JsonDocument-Objekten zu deserialisieren:

<code class="language-csharp">public static TValue? Deserialize<TValue>(this JsonDocument document, JsonSerializerOptions? options = null);
public static TValue? Deserialize<TValue>(this JsonElement element, JsonSerializerOptions? options = null);</code>

In .NET 5 und früher:

Es gibt einen Workaround, mit dem sich die Leistung verbessern lässt:

<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);
}</code>

Beispiel

<code class="language-csharp">var str = ""; // 一些 JSON 字符串
var jDoc = JsonDocument.Parse(str);
var myClass = jDoc.RootElement.GetProperty("SomeProperty").Deserialize<SomeClass>();</code>

Achtung

  • Geben Sie das JsonDocument-Objekt frei, um Speicherressourcen freizugeben.
  • Erweiterungsmethoden wurden JsonNode in .NET 6 für ähnliche Deserialisierungsfunktionen hinzugefügt.
  • Die Problemumgehung ist leistungsfähiger, da unnötige Zeichenfolgenkonvertierungen vermieden werden.

Das obige ist der detaillierte Inhalt vonWie konvertiere ich JsonElement in ein stark typisiertes Objekt in 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