Maison >développement back-end >C++ >Comment désérialiser JSON avec des clés nommées numériquement en C #?

Comment désérialiser JSON avec des clés nommées numériquement en C #?

Linda Hamilton
Linda Hamiltonoriginal
2025-02-02 12:26:10603parcourir

How to Deserialize JSON with Numerically-Named Keys in 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!

Déclaration:
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