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