Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Menyahseri JSON dengan Medan Tidak Diketahui Menggunakan ExtensionDataAttribute JSON .NET?

Bagaimanakah Saya Boleh Menyahseri JSON dengan Medan Tidak Diketahui Menggunakan ExtensionDataAttribute JSON .NET?

DDD
DDDasal
2025-01-18 09:21:10764semak imbas

How Can I Deserialize JSON with Unknown Fields Using JSON .NET's ExtensionDataAttribute?

Gunakan ExtensionDataAttribute JSON .NET untuk menyahsiri data JSON yang mengandungi medan yang diketahui dan tidak diketahui

Apabila hasil JSON mengandungi medan yang diketahui dan tidak diketahui, dan nama medan yang tidak diketahui tidak dapat diramalkan, medan yang tidak diketahui ini perlu dipetakan ke kamus untuk akses dan pengubahsuaian. Untuk ini kita boleh menggunakan atribut JsonExtensionDataAttribute dalam JSON .NET.

Pertimbangkan struktur kelas berikut:

<code class="language-csharp">public class Product
{
    public string id { get; set; }
    public string name { get; set; }

    // 额外字段
    [JsonExtensionData]
    private IDictionary<string, JToken> _extraStuff;
}</code>

Dengan menggunakan JsonExtensionDataAttribute pada atribut _extraStuff kami boleh mengarahkan JSON .NET untuk memetakan mana-mana medan yang tidak diketahui ke kamus ini. JToken mewakili data JSON mentah untuk medan khusus tersebut.

Apabila menggunakan kelas ini untuk menyahsiri JSON:

<code class="language-json">{
    "id": "7908",
    "name": "product name",
    "unknown_field_1": "some value",
    "unknown_field_2": "some value"
}</code>
Kamus

dalam objek Product_extraStuff akan diisi secara automatik dengan pasangan nilai kunci berikut:

<code class="language-csharp">{
    {"unknown_field_1", "some value"},
    {"unknown_field_2", "some value"}
}</code>

Pendekatan ini menyediakan cara yang cekap untuk mengendalikan medan yang tidak diketahui tanpa memerlukan penghurai kontrak tersuai atau pewarisan objek dinamik.

Nota: Sifat JsonExtensionDataAttribute tersedia dalam JSON .NET v5 versi 5 dan ke atas.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menyahseri JSON dengan Medan Tidak Diketahui Menggunakan ExtensionDataAttribute 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