Maison >développement back-end >C++ >Comment désérialiser JSON avec des clés nommées numériquement en C #?
Gestion de JSON avec des noms de classe C # non valides
La bibliothèque JSON de Newtonsoft peut lutter avec JSON contenant des clés qui violent les conventions de dénomination C # (comme les clés en commençant par les chiffres). Examinons comment gérer JSON comme ceci:
<code class="language-json">{ "1": { "fajr": "04:15", "sunrise": "05:42", "zuhr": "12:30", "asr": "15:53", "maghrib": "19:18", "isha": "20:40" }, "2": { "fajr": "04:15", "sunrise": "05:42", "zuhr": "12:30", "asr": "15:53", "maghrib": "19:18", "isha": "20:41" } }</code>
Étant donné que les noms de classe C # ne peuvent pas commencer par un nombre, une désérialisation directe ne fonctionnera pas. La solution consiste à désérialiser en un dictionnaire.
désérialisation à un dictionnaire
Cette approche utilise un dictionnaire pour stocker les données, où les clés sont les identificateurs numériques du JSON et les valeurs sont des objets C # représentant les temps de prière.
<code class="language-csharp">public class PrayerTimes { public string fajr { get; set; } public string sunrise { get; set; } public string zuhr { get; set; } public string asr { get; set; } public string maghrib { get; set; } public string isha { get; set; } } // ... later in your code ... string json = @"{""1"":{""fajr"":""04:15"",""sunrise"":""05:42"",""zuhr"":""12:30"",""asr"":""15:53"",""maghrib"":""19:18"",""isha"":""20:40""},""2"":{""fajr"":""04:15"",""sunrise"":""05:42"",""zuhr"":""12:30"",""asr"":""15:53"",""maghrib"":""19:18"",""isha"":""20:41""}}"; var prayerTimesDictionary = JsonConvert.DeserializeObject<Dictionary<string, PrayerTimes>>(json); // Accessing the data: foreach (var kvp in prayerTimesDictionary) { Console.WriteLine($"Day {kvp.Key}: Fajr - {kvp.Value.fajr}"); // Access other prayer times similarly... }</code>
Ce code définit une classe PrayerTimes
puis utilise JsonConvert.DeserializeObject
pour analyser le JSON dans un dictionnaire où les clés sont des chaînes (représentant les nombres de jour) et les valeurs sont PrayerTimes
objets. Cela contourne efficacement les restrictions de dénomination 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!