Rumah >pembangunan bahagian belakang >C++ >Bolehkah saya memetakan sifat JSON Child ke Properties Kelas menggunakan atribut?
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")]
<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
<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!