Apabila memproses data JSON, anda sering menghadapi situasi di mana terdapat kedua-dua medan yang diketahui dan medan yang tidak diketahui. Medan yang diketahui boleh dipetakan kepada sifat tertentu dalam kelas, manakala medan yang tidak diketahui memerlukan pengendalian khas untuk mengelakkan kehilangan data.
Satu cara untuk mengurus medan yang tidak diketahui ialah memanfaatkan penghurai kontrak tersuai dalam JSON .NET. Walau bagaimanapun, untuk mencapai ini boleh menjadi mencabar.
Penyeriseri DataContract tidak membenarkan penyahserikatan mengatasi, jadi tidak sesuai untuk kes ini.
Mensiri dan menyahsiri kepada objek dinamik boleh memberikan penyelesaian, tetapi ia adalah proses yang membosankan dan melibatkan pemprosesan pasca.
Mewarisi daripada kelas DynamicObject juga tidak menyelesaikan masalah kerana penyeri bersiri bergantung pada pantulan dan tidak memanggil kaedah tersuai untuk objek dinamik.
Daripada menggunakan teknik yang rumit, pertimbangkan JsonExtensionDataAttribute
dalam JSON .NET (versi 5.0 dan ke atas). Atribut ini membenarkan medan yang tidak diketahui disimpan secara awanama dalam atribut jenis IDictionary<string, JToken>
.
<code class="language-csharp">public class Product { public string id { get; set; } public string name { get; set; } [JsonExtensionData] public Dictionary<string, JToken> UnknownFields { get; set; } }</code>
Menggunakan pendekatan ini, data JSON akan berjaya dinyahsiri dan medan yang diketahui serta tidak diketahui boleh diakses melalui contoh kelas.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengendalikan Medan JSON yang Diketahui dan Tidak Diketahui Semasa Penyahserialisasian dalam .NET?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!