Fungsi yang setara dalam System.Text.Json
Rangka kerja Json.NET menyediakan kaedah ToObject()
untuk menukar JToken kepada kelas. Walau bagaimanapun, tiada persamaan langsung kaedah ini dalam System.Text.Json.
Penyelesaian untuk .NET 6 dan ke atas
Dalam .NET 6, kaedah sambungan telah diperkenalkan yang membolehkan objek dinyahsiri terus daripada JsonElement atau JsonDocument. Kaedah ini ialah:
<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>
Contoh:
<code class="language-csharp">using var jDoc = JsonDocument.Parse(str); var myClass = jDoc.RootElement.GetProperty("SomeProperty").Deserialize<SomeClass>();</code>
Penyelesaian untuk .NET 5 dan lebih awal
Dalam .NET 5 dan lebih awal, kaedah sambungan ini tidak wujud. Sila pertimbangkan untuk menggunakan penyelesaian berikut:
<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>
Atas ialah kandungan terperinci Bagaimana untuk Menukar JsonElement atau JsonDocument kepada Objek dalam System.Text.Json?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!