Adommagent la cartographie des propriétés enfants JSON avec les attributs
Cet article explore l'utilisation d'attributs pour cartographier les propriétés JSON imbriquées aux propriétés de classe plus simples, améliorant la flexibilité de la désérialisation JSON.
Défis avec désérialisation standard:
Bien que la méthode DeserializeObject
de Newtonsoft.json convertit efficacement JSON en objets, il manque de prise en charge directe pour mappage des propriétés enfants dans des structures JSON complexes en propriétés de classe simples.
Solutions:
Deux approches efficaces sont présentées:
Méthode 1: Jobject et Sélection de propriété:
JObject
. ToObject()
pour créer un objet initial. SelectToken()
pour extraire la valeur spécifique de la propriété enfant. Exemple:
<code class="language-csharp">string json = "{ \"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>
Méthode 2: JSONConverter personnalisé:
JsonConverter
héritant de JsonConverter
. ReadJson
pour utiliser la réflexion pour la population immobilière du JObject
. [JsonConverter]
. [JsonProperty]
Attributs, spécifiant le chemin de propriété souhaité comme nom de l'attribut. Exemple:
<code class="language-csharp">[JsonConverter(typeof(JsonPathConverter))] class Person { [JsonProperty("picture.data.url")] public string ProfilePicture { get; set; } }</code>
Résumé:
Les deux techniques offrent des solutions pour cartographier les propriétés JSON imbriquées aux propriétés de classe plus simples, améliorant la flexibilité de la désérialisation JSON. L'approche optimale dépend des besoins et des préférences spécifiques au projet.
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!