Rumah > pembangunan bahagian belakang > C++ > Bagaimana untuk menafikan JSON dengan kekunci bernama di C#?

Bagaimana untuk menafikan JSON dengan kekunci bernama di C#?

Linda Hamilton
Lepaskan: 2025-02-02 12:26:10
asal
601 orang telah melayarinya

How to Deserialize JSON with Numerically-Named Keys in C#?

mengendalikan JSON dengan nama kelas C# tidak sah

Perpustakaan Newtonsoft JSON boleh berjuang dengan JSON yang mengandungi kekunci yang melanggar konvensyen C# penamaan (seperti kunci bermula dengan nombor). Mari kita periksa cara mengendalikan JSON seperti ini:

<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>
Salin selepas log masuk
Oleh kerana nama kelas C# tidak dapat dimulakan dengan nombor, deserialization langsung tidak akan berfungsi. Penyelesaiannya adalah untuk deserialize ke dalam kamus.

deserialization ke kamus

Pendekatan ini menggunakan kamus untuk menyimpan data, di mana kunci adalah pengenal numerik dari JSON dan nilai -nilai adalah objek C yang mewakili masa doa.

<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>
Salin selepas log masuk
Kod ini mentakrifkan kelas

dan kemudian menggunakan PrayerTimes untuk menghuraikan JSON ke dalam kamus di mana kunci adalah rentetan (mewakili nombor hari) dan nilai adalah JsonConvert.DeserializeObject objek. Ini berkesan memintas sekatan penamaan C#. PrayerTimes

Atas ialah kandungan terperinci Bagaimana untuk menafikan JSON dengan kekunci bernama di C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan