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
Barbara Streisandasal
2025-01-08 15:27:40994semak imbas

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>

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

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

.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>

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!

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