Maison > développement back-end > C++ > Comment puis-je désérialiser des données JSON imbriquées complexes dans des classes C# ?

Comment puis-je désérialiser des données JSON imbriquées complexes dans des classes C# ?

Patricia Arquette
Libérer: 2025-01-19 22:13:10
original
488 Les gens l'ont consulté

How Can I Deserialize Complex Nested JSON Data into C# Classes?

Désérialiser les données JSON imbriquées complexes en classe C#

Dans certains cas, l'API peut renvoyer des données JSON contenant plusieurs niveaux d'objets imbriqués. La désérialisation de ces données dans une classe C# peut s'avérer difficile, surtout si la structure de l'objet ne correspond pas exactement à la réponse JSON.

Explication détaillée du problème

Comme le montre l'exemple, la réponse JSON fournie contient un objet « results » au niveau racine, qui contient un objet « jobcodes » qui contient plusieurs paires clé-valeur représentant des codes de travail individuels. Cependant, la conception originale de l'objet C# ne prenait en compte qu'une seule instance de JobCode, ce qui entraînait le renvoi de valeurs nulles lors de la désérialisation.

Solution

Afin de réussir à désérialiser des données JSON complexes, assurez-vous de créer une structure de classe exactement la même que la réponse JSON. Dans ce cas :

  1. Objet de niveau racine : Nécessite une classe "RootObject" pour représenter la structure JSON globale et contenir une propriété "Results".
  2. Objets imbriqués : La classe "Results" doit contenir une propriété "jobcodes" de type Dictionary<string, JobCode>. Cela reflète la nature dynamique de l'objet « jobcodes » dans la réponse JSON.
  3. Classe JobCode : La classe "JobCode" reste inchangée et représente les détails du code de travail individuel.

Code de désérialisation

Avec la bonne structure de classes en place, la désérialisation devient simple :

<code class="language-csharp">RootObject obj = JsonConvert.DeserializeObject<RootObject>(json);</code>
Copier après la connexion

Cette ligne de code désérialise la réponse JSON à la classe "RootObject", vous donnant accès à sa propriété "Results" et aux détails du code de travail associé.

Retour à la liste des JobCodes

Pour enfin récupérer la liste des codes métiers, vous pouvez utiliser une simple boucle pour les extraire du dictionnaire "JobCodes" :

<code class="language-csharp">List<JobCode> jobCodes = new List<JobCode>();
foreach (KeyValuePair<string, JobCode> jobCode in obj.Results.JobCodes)
{
    jobCodes.Add(jobCode.Value);
}</code>
Copier après la connexion

En suivant ces étapes, vous pouvez désérialiser efficacement des données JSON complexes contenant des objets imbriqués dans des classes C#, facilitant ainsi l'accès et le traitement des réponses API.

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