Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Cekap Menukar JsonElement kepada Objek .NET?

Bagaimana untuk Cekap Menukar JsonElement kepada Objek .NET?

Patricia Arquette
Patricia Arquetteasal
2025-01-08 15:31:40766semak imbas

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.

How to Efficiently Convert JsonElement to a .NET Object?

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn