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
Lepaskan: 2025-01-08 15:37:46
asal
1027 orang telah melayarinya

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>
Salin selepas log masuk

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>
Salin selepas log masuk

Contoh

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

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan