Maison >développement back-end >C++ >Comment puis-je désérialiser des objets JSON imbriqués pour extraire une liste de codes de travail ?

Comment puis-je désérialiser des objets JSON imbriqués pour extraire une liste de codes de travail ?

DDD
DDDoriginal
2025-01-19 22:11:17517parcourir

How Can I Deserialize Nested JSON Objects to Extract a List of Job Codes?

Gestion de la désérialisation des objets JSON imbriqués

Dans votre code, vous rencontrez des difficultés pour désérialiser les données JSON contenant des objets imbriqués. Ce guide abordera ce problème et fournira une solution pour obtenir une liste de codes de travail à partir du JSON fourni.

Structure de classe incohérente

Au départ, vous essayez de désérialiser l'intégralité de la réponse JSON en une seule JobCode classe, en ignorant qu'il existe plusieurs codes de travail sous la clé "jobcodes". Pour résoudre ce problème, nous devons créer des classes qui correspondent à la structure JSON.

Utiliser un dictionnaire pour gérer les clés variables

Les clés de l'attribut "jobcodes" en JSON sont des valeurs de chaîne ("1" et "2" dans votre exemple). Pour tenir compte de cette variabilité, nous utilisons Dictionary<string, JobCode> au lieu de simplement List<JobCode>. Ce dictionnaire nous permet de récupérer les codes de travail à l'aide de leurs clés respectives.

Structure de classe mise à jour

Ce qui suit est la structure de classe modifiée alignée sur JSON :

<code class="language-csharp">public class RootObject
{
    [JsonProperty("results")]
    public Results Results { get; set; }
}

public class Results
{
    [JsonProperty("jobcodes")]
    public Dictionary<string, JobCode> JobCodes { get; set; }
}

public class JobCode
{
    [JsonProperty("_status_code")]
    public string StatusCode { get; set; }
    [JsonProperty("_status_message")]
    public string StatusMessage { get; set; }
    [JsonProperty("id")]
    public string Id { get; set; }
    [JsonProperty("name")]
    public string Name { get; set; }
}</code>

Désérialisation mise à jour

Avec ces classes, vous pouvez désérialiser JSON en utilisant le code suivant :

<code class="language-csharp">RootObject obj = JsonConvert.DeserializeObject<RootObject>(json);</code>

Cela remplira la variable obj avec les données JSON désérialisées, vous permettant d'accéder à la liste des codes de travail via obj.Results.JobCodes.

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