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

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

Barbara Streisand
Lepaskan: 2025-01-08 15:27:40
asal
1040 orang telah melayarinya

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

Menggunakan kaedah ini, anda boleh menyahsiri objek dengan mudah daripada JsonElement:

<code class="language-csharp">var myClass = jDoc.RootElement.GetProperty("SomeProperty").Deserialize<MyClass>();</code>
Salin selepas log masuk

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

Kaedah ini berprestasi lebih baik daripada menukar JsonElement kepada rentetan dahulu.

Nota:

    Keluaran
  • JsonDocument: JsonDocument menggunakan memori terkumpul, jadi ia perlu dikeluarkan dengan betul (disyorkan untuk menggunakan pernyataan using).
  • Ketersediaan kaedah baharu: Kaedah sambungan penyahserikatan baharu tersedia dalam .NET 6.0 Pratonton RC1 dan lebih baharu.
  • Kaedah serupa untuk
  • JsonNode: Kaedah serupa wujud untuk nod dokumen JSON boleh ubah JsonNode.

How to Convert a JsonElement to an Object in .NET's System.Text.Json?

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!

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