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