In Newtonsoft.Json wird die Methode ToObject()
normalerweise zum Konvertieren von JSON-Tokens in stark typisierte Objekte verwendet. Allerdings ist in System.Text.Json keine gleichwertige Methode verfügbar.
In .NET 6 und höher wurden Erweiterungsmethoden zu JsonSerializer
hinzugefügt, um Objekte direkt von JsonElement
oder JsonDocument
zu deserialisieren. Dies ermöglicht die folgende Syntax:
using var jDoc = JsonDocument.Parse(str); var myClass = jDoc.RootElement.GetProperty("SomeProperty").Deserialize<SomeClass>();
Für .NET 5 und früher kann eine Problemumgehung durch Schreiben in einen Zwischenbyte-Puffer verwendet werden, um die Leistung zu verbessern:
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); }
Anleitung:
JsonDocument
-Anweisung für using
zu verwenden, da diese freigabefähig ist. Das obige ist der detaillierte Inhalt vonWie deserialisiere ich JSON-Elemente in Objekte in System.Text.Json?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!