Mengatasi Pemetaan Harta Anak JSON dengan Atribut
Artikel ini meneroka menggunakan atribut untuk memetakan sifat JSON bersarang kepada sifat kelas yang lebih ringkas, meningkatkan fleksibiliti penyahserikatan JSON.
Cabaran dengan Penyahserialisasian Standard:
Walaupun kaedah DeserializeObject
Newtonsoft.Json secara berkesan menukarkan JSON kepada objek, kaedah ini tidak mempunyai sokongan langsung untuk memetakan sifat anak dalam struktur JSON yang kompleks kepada sifat kelas mudah.
Penyelesaian:
Dua pendekatan berkesan dibentangkan:
Kaedah 1: JObject dan Pemilihan Harta:
JObject
.ToObject()
untuk mencipta objek awal.SelectToken()
untuk mengekstrak nilai harta kanak-kanak tertentu.Contoh:
string json = "{ \"picture\": { \"id\": 123456, \"data\": { \"type\": \"jpg\", \"url\": \"http://www.someplace.com/mypicture.jpg\" } } }"; JObject jo = JObject.Parse(json); Person p = jo.ToObject<Person>(); p.ProfilePicture = (string)jo.SelectToken("picture.data.url");
Kaedah 2: Penukar Json Tersuai:
JsonConverter
adat yang diwarisi daripada JsonConverter
.ReadJson
untuk menggunakan pantulan untuk populasi hartanah daripada JObject
.[JsonConverter]
.[JsonProperty]
, nyatakan laluan sifat yang diingini sebagai nama atribut.Contoh:
[JsonConverter(typeof(JsonPathConverter))] class Person { [JsonProperty("picture.data.url")] public string ProfilePicture { get; set; } }
Ringkasan:
Kedua-dua teknik menawarkan penyelesaian untuk memetakan sifat JSON bersarang kepada sifat kelas yang lebih ringkas, meningkatkan fleksibiliti penyahserikatan JSON. Pendekatan optimum bergantung pada keperluan dan keutamaan khusus projek.
Atas ialah kandungan terperinci Bolehkah Atribut Menyelesaikan Cabaran Pemetaan Harta Kanak-kanak JSON?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!