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
Patricia Arquetteoriginal
2025-01-24 23:02:14385parcourir

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

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

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