Heim >Backend-Entwicklung >C++ >Wie deserialisiere ich JSON-Elemente in Objekte in System.Text.Json?
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:
<code class="language-csharp">using var jDoc = JsonDocument.Parse(str); var myClass = jDoc.RootElement.GetProperty("SomeProperty").Deserialize<SomeClass>();</code>
Für .NET 5 und früher kann eine Problemumgehung durch Schreiben in einen Zwischenbyte-Puffer verwendet werden, um die Leistung zu verbessern:
<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>
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!