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 :
Dictionary<string, JobCode>
. Cela reflète la nature dynamique de l'objet « jobcodes » dans la réponse JSON. 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>
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>
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!