Utilisez l'attribut pour accéder aux sous-attributs dans JSON?
par newtonsoft.json permet DeserializeObject<T>
de mapper les données JSON d'origine à l'attribut de classe. Cependant, si vous souhaitez cartographier les sous-attributs des objets JSON complexes aux attributs simples de la classe, que dois-je faire? [DataMember(Name = "raw_property_name")]
<code class="language-json">{ "picture": { "id": 123456, "data": { "type": "jpg", "url": "http://www.someplace.com/mypicture.jpg" } } }</code>
de l'objet , vous ne voulez donc pas créer d'objets complexes dans la classe. Pouvez-vous le refléter simplement comme ça? picture
url
<code class="language-csharp">[DataMember(Name = "picture.data.url")] public string ProfilePicture { get; set; }</code>
Une méthode simple consiste à analyser JSON comme . Ensuite, utilisez
pour remplir votre classe de. Pour extraire des attributs supplémentaires, veuillez utiliser JObject
: ToObject()
JObject
SelectToken()
JSONConverr
<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>
ou, vous pouvez créer un personnalisé pour activer l'attribut pour mappore l'attribut en fonction de vos besoins:
JsonConverter
La méthode d'utilisation est la suivante: JsonProperty
<code class="language-csharp">class JsonPathConverter : JsonConverter { // ... 实现代码在问题答案中提供 ... }</code>
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!