Ä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:
<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>
Beispiel:
<code class="language-csharp">using var jDoc = JsonDocument.Parse(str); var myClass = jDoc.RootElement.GetProperty("SomeProperty").Deserialize<SomeClass>();</code>
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:
<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) { if (document == null) throw new ArgumentNullException(nameof(document)); return document.RootElement.ToObject<T>(options); }</code>
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!