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
Freigeben: 2025-01-08 15:37:46
Original
1045 Leute haben es durchsucht

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:

public static TValue? Deserialize<TValue>(this JsonDocument document, JsonSerializerOptions? options = null);
public static TValue? Deserialize<TValue>(this JsonElement element, JsonSerializerOptions? options = null);
Nach dem Login kopieren

In .NET 5 und früher:

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

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);
}
Nach dem Login kopieren

Beispiel

var str = ""; // 一些 JSON 字符串
var jDoc = JsonDocument.Parse(str);
var myClass = jDoc.RootElement.GetProperty("SomeProperty").Deserialize<SomeClass>();
Nach dem Login kopieren

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!

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