Maison > développement back-end > C++ > Puis-je mapper les propriétés JSON enfants aux propriétés de classe à l'aide d'attributs ?

Puis-je mapper les propriétés JSON enfants aux propriétés de classe à l'aide d'attributs ?

Patricia Arquette
Libérer: 2025-01-24 23:02:14
original
383 Les gens l'ont consulté

Can I Map Child JSON Properties to Class Properties Using Attributes?

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")]

Par exemple, considérez le JSON suivant:

<code class="language-json">{
    "picture": 
    {
        "id": 123456,
        "data": 
        {
            "type": "jpg",
            "url": "http://www.someplace.com/mypicture.jpg"
        }
    }
}</code>
Copier après la connexion
Vous pouvez uniquement vous intéresser aux attributs

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

Utilisez Jobject pour effectuer un mappage de chemin direct
<code class="language-csharp">[DataMember(Name = "picture.data.url")]
public string ProfilePicture { get; set; }</code>
Copier après la connexion

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>
Copier après la connexion
personnalisé

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>
Copier après la connexion
Cela vous permet d'utiliser le mappage basé sur l'attribut pour les sous-attributs, afin de fournir une plus grande flexibilité lors de la sérialisation des données JSON dans des objets de classe.

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!

source:php.cn
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