Gestion de la désérialisation JSON des clés dynamiques en C#
Lors de la réception d'une réponse JSON avec des clés dynamiques, la désérialiser en un objet C# avec un modèle de données prédéfini peut s'avérer délicat. Cet article traite d'un scénario spécifique dans lequel la réponse JSON contient des objets avec des clés dynamiques.
La réponse JSON suivante illustre le problème :
<code>{ "nasdaq_imbalance": { "name": "nasdaq_imbalance", "group": "Market Data", "description": null }, "DXOpen IM": { "name": "DXOpen IM", "group": "Daily", "description": null }, "Float Shares": { "name": "Float Shares", "group": "Daily", "description": null }, }</code>
L'objectif est de désérialiser ce JSON en une liste d'objets Dataset avec des propriétés de nom, de groupe et de description.
Solution : Utilisez Json.NET et le dictionnaire
Json.NET fournit une solution pour désérialiser JSON avec des clés dynamiques vers des objets C#. En utilisant JsonConvert.DeserializeObject<Dictionary<string, Dataset>>(json)
, vous pouvez désérialiser JSON dans un dictionnaire où les clés sont des clés dynamiques de la réponse JSON et les valeurs sont des objets Dataset.
Le code suivant illustre cette solution :
<code class="language-csharp">using Newtonsoft.Json; ... // 将JSON反序列化到一个包含动态键和Dataset对象的字典中 var json = @"{ ""nasdaq_imbalance"": { ""name"": ""nasdaq_imbalance"", ""group"": ""Market Data"", ""description"": null }, ""DXOpen IM"": { ""name"": ""DXOpen IM"", ""group"": ""Daily"", ""description"": null }, ""Float Shares"": { ""name"": ""Float Shares"", ""group"": ""Daily"", ""description"": null }, }"; var datasetDictionary = JsonConvert.DeserializeObject<Dictionary<string, Dataset>>(json); // 使用动态键作为字典键访问Dataset对象 foreach (var dataset in datasetDictionary.Values) { Console.WriteLine($"Dataset: {dataset.name}, Group: {dataset.group}, Description: {dataset.description}"); }</code>
Cette solution vous permet de désérialiser JSON avec des clés dynamiques vers un objet C# tout en préservant la structure clé-valeur d'origine.
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!