Äquivalente Funktion in System.Text.Json
Das Json.NET-Framework bietet eine ToObject()
-Methode zum Konvertieren von JToken in eine Klasse. Allerdings gibt es in System.Text.Json kein direktes Äquivalent dieser Methode.
Problemumgehung für .NET 6 und höher
In .NET 6 wurden Erweiterungsmethoden eingeführt, die die Deserialisierung von Objekten direkt aus einem JsonElement oder JsonDocument ermöglichen. Diese Methoden sind:
public static TValue? Deserialize<TValue>(this JsonDocument document, JsonSerializerOptions? options = null); public static object? Deserialize(this JsonDocument document, Type returnType, JsonSerializerOptions? options = null);
Beispiel:
using var jDoc = JsonDocument.Parse(str); var myClass = jDoc.RootElement.GetProperty("SomeProperty").Deserialize<SomeClass>();
Problemumgehung für .NET 5 und früher
In .NET 5 und früher sind diese Erweiterungsmethoden nicht vorhanden. Bitte erwägen Sie die Verwendung der folgenden Problemumgehungen:
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) { if (document == null) throw new ArgumentNullException(nameof(document)); return document.RootElement.ToObject<T>(options); }
Das obige ist der detaillierte Inhalt vonWie konvertiere ich ein JsonElement oder JsonDocument in ein Objekt in System.Text.Json?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!