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
Patricia Arquetteasal
2025-01-24 23:02:14333semak imbas

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

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>

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

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