Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Menukar JsonElement kepada Objek dalam System.Text.Json .NET?
Dalam .NET Core 3 dan ke atas, kaedah untuk menukar JsonElement kepada objek
Artikel ini meneroka cara menukar System.Text.Json
kepada objek menggunakan JsonElement
dalam .NET Core 3 dan ke atas. System.Text.Json
ialah perpustakaan pemprosesan JSON baharu dalam .NET Core 3.0 dan ia tidak mengandungi setara dengan kaedah Json.NET
dalam ToObject()
yang membenarkan penukaran JToken
kepada kelas.
.NET 6 dan ke atas:
Bermula dengan .NET 6, JsonSerializer
menyediakan kaedah sambungan untuk menyahsiri terus daripada JsonElement
atau JsonDocument
:
<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>
Menggunakan kaedah ini, anda boleh menyahsiri objek dengan mudah daripada JsonElement
:
<code class="language-csharp">var myClass = jDoc.RootElement.GetProperty("SomeProperty").Deserialize<MyClass>();</code>
.NET 5 dan lebih awal:
Dalam versi terdahulu .NET, kaedah ini tidak tersedia. Penyelesaiannya ialah menulis JSON kepada penimbal bait perantaraan:
<code class="language-csharp">public static partial class JsonExtensions { 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); } }</code>
Kaedah ini berprestasi lebih baik daripada menukar JsonElement
kepada rentetan dahulu.
Nota:
JsonDocument
: JsonDocument
menggunakan memori terkumpul, jadi ia perlu dikeluarkan dengan betul (disyorkan untuk menggunakan pernyataan using
). JsonNode
: Kaedah serupa wujud untuk nod dokumen JSON boleh ubah JsonNode
. Atas ialah kandungan terperinci Bagaimana untuk Menukar JsonElement kepada Objek dalam System.Text.Json .NET?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!