Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Cekap Menukar JsonElement kepada Objek .NET?
Menukar JsonElement dengan Cekap kepada Objek .NET
System.Text.Json, yang diperkenalkan dalam .NET Core 3.0, menawarkan penyelesaian pengendalian JSON berprestasi tinggi. Walau bagaimanapun, tidak seperti Json.NET, ia tidak mempunyai persamaan langsung dengan kaedah ToObject
untuk penukaran mudah JsonElement
kepada objek .NET sehingga .NET 6.
.NET 6 dan Seterusnya: Penukaran Dipermudah
.NET 6 dan versi yang lebih baru menyediakan kaedah sambungan terbina dalam dalam JsonSerializer
yang menyelaraskan proses:
<code class="language-csharp">public static TValue? Deserialize<TValue>(this JsonDocument document, JsonSerializerOptions? options = null); public static object? Deserialize(this JsonElement element, Type returnType, JsonSerializerOptions? options = null);</code>
Ini membolehkan penukaran mudah:
<code class="language-csharp">using var jDoc = JsonDocument.Parse(jsonString); var myObject = jDoc.RootElement.GetProperty("propertyName").Deserialize<MyObjectType>();</code>
.NET 5 dan Terdahulu: Penyelesaian Praktikal
Untuk projek yang menggunakan .NET 5 atau versi terdahulu, yang tidak mempunyai kaedah sambungan yang mudah ini, penyelesaian melibatkan menulis JsonElement
kepada penimbal bait dan kemudian menyahsiri daripada penimbal itu:
<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) { return document.RootElement.ToObject<T>(options); }</code>
Kaedah ini mengelakkan overhed penukaran rentetan atau rentang aksara, menyediakan penyelesaian yang cekap untuk versi .NET yang lebih lama.
Atas ialah kandungan terperinci Bagaimana untuk Cekap Menukar JsonElement kepada Objek .NET?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!