Maison >développement back-end >C++ >Comment désérialiser JSON avec des clés dynamiques en C# ?
Méthode de désérialisation C# pour gérer les données JSON avec des clés dynamiques
Lorsque vous traitez une réponse JSON avec des clés dynamiques (telles que le JSON fourni dans la question), la désérialiser en un objet C# fortement typé peut s'avérer délicate. Puisque les clés sont imprévisibles, il n’est pas possible de mapper la structure de réponse directement à la définition de classe.
Pour résoudre ce problème, vous pouvez utiliser la fonctionnalité de saisie dynamique en C#. JSON peut être désérialisé en objets dynamiques à l'aide de la méthode JsonConvert.DeserializeObject
de la bibliothèque Newtonsoft JSON. Cet objet dynamique permet d'accéder aux propriétés à l'aide de clés de chaîne obtenues dynamiquement à partir de la réponse JSON.
Par exemple, l'extrait de code suivant montre comment désérialiser la réponse JSON fournie en un objet dynamique :
<code class="language-csharp">dynamic dynamicObject = JsonConvert.DeserializeObject<dynamic>(json);</code>
Vous pouvez désormais accéder aux propriétés de dynamicObject
en utilisant le nom de propriété récupéré de la réponse JSON, par exemple :
<code class="language-csharp">var nasdaqImbalanceName = dynamicObject["nasdaq_imbalance"].name; var dxOpenIMGroup = dynamicObject["DXOpen IM"].group;</code>
Cependant, si une représentation fortement typée est requise, une approche plus avancée est requise. Vous pouvez désérialiser une réponse JSON dans une liste de ces objets personnalisés en créant une classe personnalisée contenant les noms de propriétés requis pour représenter la structure JSON.
Pour la réponse JSON fournie, la définition de classe suivante est appropriée :
<code class="language-csharp">public class Dataset { public string name { get; set; } public string group { get; set; } public string description { get; set; } }</code>
Pour ce faire, vous pouvez utiliser la classe JsonConvert
pour désérialiser le JSON en un dictionnaire de clés de chaîne vers des Dataset
objets, puis le convertir en une liste d'objets :
<code class="language-csharp">var dictionary = JsonConvert.DeserializeObject<Dictionary<string, Dataset>>(json); var datasetList = dictionary.Values.ToList();</code>
Cette approche vous permet de représenter des structures JSON dynamiques de manière sécurisée, permettant un accès facile aux données dans les applications C#.
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!