Maison > développement back-end > C++ > Les attributs peuvent-ils résoudre des défis de cartographie des biens enfants JSON?

Les attributs peuvent-ils résoudre des défis de cartographie des biens enfants JSON?

Linda Hamilton
Libérer: 2025-01-24 23:16:14
original
662 Les gens l'ont consulté

Can Attributes Solve JSON Child Property Mapping Challenges?

Tiration des attributs pour la cartographie des propriétés JSON flexible

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

  1. Analyser la chaîne JSON dans A JObject.
  2. Utiliser ToObject() pour créer un objet initial.
  3. Utiliser 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>
Copier après la connexion

Méthode 2: JSONConverter personnalisé:

  1. Développer une personnalité JsonConverter héritant de JsonConverter.
  2. remplacer la méthode ReadJson pour utiliser la réflexion pour la population immobilière du JObject.
  3. Décorez la classe cible avec l'attribut [JsonConverter].
  4. Utiliser [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>
Copier après la connexion

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!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal