Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Menukar JsonElement kepada Objek Ditaip Kuat dalam System.Text.Json?

Bagaimana untuk Menukar JsonElement kepada Objek Ditaip Kuat dalam System.Text.Json?

Linda Hamilton
Linda Hamiltonasal
2025-01-08 15:37:46986semak imbas

How to Convert JsonElement to a Strongly-Typed Object in System.Text.Json?

Kaedah bersamaan ToObject System.Text.Json.JsonElement

Konsep

Dalam .NET Core 3, perpustakaan Json.NET menyediakan kaedah ToObject, membenarkan objek JToken ditukar kepada kelas yang ditaip kuat. Artikel ini meneroka kaedah yang setara untuk menyahsiri objek JsonElement dalam System.Text.Json.

Penyelesaian

Dalam .NET 6 dan ke atas:

JsonSerializer telah menambah kaedah sambungan untuk menyahsiri terus daripada objek JsonElement dan JsonDocument:

<code class="language-csharp">public static TValue? Deserialize<TValue>(this JsonDocument document, JsonSerializerOptions? options = null);
public static TValue? Deserialize<TValue>(this JsonElement element, JsonSerializerOptions? options = null);</code>

Dalam .NET 5 dan lebih awal:

Terdapat penyelesaian yang boleh digunakan untuk meningkatkan prestasi:

<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);
}</code>

Contoh

<code class="language-csharp">var str = ""; // 一些 JSON 字符串
var jDoc = JsonDocument.Parse(str);
var myClass = jDoc.RootElement.GetProperty("SomeProperty").Deserialize<SomeClass>();</code>

Perhatian

  • Lepaskan objek JsonDocument untuk melepaskan sumber memori.
  • Kaedah sambungan telah ditambahkan pada JsonNode dalam .NET 6 untuk kefungsian penyahserikatan yang serupa.
  • Penyelesaian berfungsi lebih baik kerana ia mengelakkan penukaran rentetan yang tidak perlu.

Atas ialah kandungan terperinci Bagaimana untuk Menukar JsonElement kepada Objek Ditaip Kuat dalam System.Text.Json?. 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