Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk menafikan JSON dengan kekunci bernama di 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>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>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!