Rumah > pembangunan bahagian belakang > C++ > Bolehkah saya memetakan sifat JSON Child ke Properties Kelas menggunakan atribut?

Bolehkah saya memetakan sifat JSON Child ke Properties Kelas menggunakan atribut?

Patricia Arquette
Lepaskan: 2025-01-24 23:02:14
asal
325 orang telah melayarinya

Can I Map Child JSON Properties to Class Properties Using Attributes?

Gunakan atribut untuk mengakses sub -attribut di JSON?

oleh NewtonSoft.json membolehkan DeserializeObject<T> memetakan data JSON asal ke atribut kelas. Walau bagaimanapun, jika anda ingin memetakan sub -atribut objek JSON kompleks ke atribut mudah kelas, apa yang perlu saya lakukan? [DataMember(Name = "raw_property_name")]

Sebagai contoh, pertimbangkan JSON berikut:

<code class="language-json">{
    "picture": 
    {
        "id": 123456,
        "data": 
        {
            "type": "jpg",
            "url": "http://www.someplace.com/mypicture.jpg"
        }
    }
}</code>
Salin selepas log masuk
Anda hanya boleh berminat dengan atribut

objek , jadi anda tidak mahu membuat objek kompleks di dalam kelas. Bolehkah anda mencerminkannya seperti ini? picture url

Gunakan jobject untuk melakukan pemetaan laluan langsung
<code class="language-csharp">[DataMember(Name = "picture.data.url")]
public string ProfilePicture { get; set; }</code>
Salin selepas log masuk

Kaedah mudah adalah untuk menganalisis JSON sebagai . Kemudian, gunakan

untuk mengisi kelas anda dari

. Untuk mengekstrak atribut tambahan, sila gunakan JObject: ToObject() JObject SelectToken() JSONConverr disesuaikan

<code class="language-csharp">string json = @"
{
    ""name"" : ""Joe Shmoe"",
    ""age"" : 26,
    ""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>
Salin selepas log masuk

atau, anda boleh membuat adat untuk mengaktifkan atribut untuk mengetuk atribut mengikut keperluan anda:

JsonConverter kaedah penggunaan adalah seperti berikut: JsonProperty

<code class="language-csharp">class JsonPathConverter : JsonConverter
{
    // ... 实现代码在问题答案中提供 ...
}</code>
Salin selepas log masuk
Ini membolehkan anda menggunakan pemetaan berasaskan atribut untuk sub -attributes, untuk memberikan fleksibiliti yang lebih besar apabila bersiri data JSON ke dalam objek kelas.

Atas ialah kandungan terperinci Bolehkah saya memetakan sifat JSON Child ke Properties Kelas menggunakan atribut?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan