Maison >développement back-end >C++ >Comment mapper des propriétés JSON imbriquées à des propriétés C# simples ?

Comment mapper des propriétés JSON imbriquées à des propriétés C# simples ?

Patricia Arquette
Patricia Arquetteoriginal
2025-01-24 22:57:11589parcourir

How to Map Nested JSON Properties to Simple C# Properties?

l'attribut simple qui mappe le sous-attribut JSON à l'objet C #

Introduction

Créer un comportement sur séquentiel sur le dos personnalisé dans newtonsoft.json peut être réalisé par des attributs et des convertisseurs personnalisés. Cela vous permet de cartographier les sous-attributs de l'objet JSON aux attributs simples de la classe C #, même s'ils n'ont pas l'objet correspondant.

Utilisez la méthode auxiliaire

Si vous n'avez besoin que d'un attribut supplémentaire, une méthode simple consiste à résoudre votre JSON en tant que travail, remplissez votre classe avec ToObject (), puis utilisez SelectToken () pour extraire les attributs supplémentaires. Par exemple:

Créer un JSONConverter personnalisé

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

Pour des solutions plus compliquées, vous pouvez créer un converteur JSON personnalisé qui utilise la technologie ci-dessus pour traiter tous les attributs marqués d'attributs JSONProperty. JSONConver peut utiliser la réflexion pour trouver des attributs, les mapper sur le chemin JSON correct et remplir les attributs en conséquence.

Le convertisseur personnalisé associé

<code class="language-csharp">class JsonPathConverter : JsonConverter
{
    // ReadJson 实现在此处...
}</code>
Utilisez la propriété [JSONConverter] pour associer le convertisseur en classe cible. Vous pouvez ensuite appliquer la propriété [JSONProperty] aux attributs requis et spécifier le chemin JSON comme nom d'attribut.

Après avoir utilisé ces attributs, vous pouvez dériver JSON comme d'habitude et le mappage se produira automatiquement.

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