Rumah >pembangunan bahagian belakang >C++ >Bolehkah Atribut Menyelesaikan Cabaran Pemetaan Harta Kanak-kanak JSON?

Bolehkah Atribut Menyelesaikan Cabaran Pemetaan Harta Kanak-kanak JSON?

Linda Hamilton
Linda Hamiltonasal
2025-01-24 23:16:14690semak imbas

Can Attributes Solve JSON Child Property Mapping Challenges?

Memanfaatkan Atribut untuk Pemetaan Harta JSON Fleksibel

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:

  1. Hilangkan rentetan JSON menjadi JObject.
  2. Gunakan ToObject() untuk mencipta objek awal.
  3. Gunakan SelectToken() untuk mengekstrak nilai harta kanak-kanak tertentu.

Contoh:

<code class="language-csharp">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");</code>

Kaedah 2: Penukar Json Tersuai:

  1. Bangunkan JsonConverter adat yang diwarisi daripada JsonConverter.
  2. Timpa kaedah ReadJson untuk menggunakan pantulan untuk populasi hartanah daripada JObject.
  3. Hiaskan kelas sasaran dengan atribut [JsonConverter].
  4. Gunakan atribut [JsonProperty], nyatakan laluan sifat yang diingini sebagai nama atribut.

Contoh:

<code class="language-csharp">[JsonConverter(typeof(JsonPathConverter))]
class Person
{
    [JsonProperty("picture.data.url")]
    public string ProfilePicture { get; set; }
}</code>

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!

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