Artikel ini menunjukkan cara untuk menyahsiri tatasusunan JSON yang mengandungi jenis data bercampur ke dalam kelas C# taip kuat. Cabarannya terletak pada skema JSON yang tidak konsisten, di mana nilai kamus ialah tatasusunan elemen yang tidak dinamakan.
Contoh JSON kelihatan seperti ini:
<code class="language-json">{ "timestamp": 1473730993, "total_players": 945, "max_score": 8961474, "players": { "Player1Username": [ 121, "somestring", 679900, 5, 4497, "anotherString", "thirdString", "fourthString", 123, 22, "YetAnotherString"], "Player2Username": [ 886, "stillAstring", 1677, 1, 9876, "alwaysAstring", "thirdString", "fourthString", 876, 77, "string"] } }</code>
Penyelesaian menggunakan Newtonsoft.Json dan penukar tersuai, ObjectToArrayConverter<T>
, untuk memetakan elemen tatasusunan yang tidak dinamakan kepada sifat dalam kelas Player
. Atribut JsonProperty
dengan parameter Order
adalah penting untuk memetakan elemen tatasusunan dengan betul kepada sifat kelas berdasarkan kedudukannya.
Berikut ialah perwakilan ringkas bagi kelas utama:
Kelas Pemain:
<code class="language-csharp">[JsonConverter(typeof(ObjectToArrayConverter<Player>))] public class Player { [JsonProperty(Order = 1)] public int UniqueID { get; set; } [JsonProperty(Order = 2)] public string PlayerDescription { get; set; } // ... other properties ... }</code>
Kelas ObjectToArrayConverter<T>
(pelaksanaan ditiadakan untuk keringkasan) mengendalikan logik penukaran. Objek akar, ScoreboardResults
, ditakrifkan untuk memegang keseluruhan struktur JSON:
Kelas Keputusan Papan Skor:
<code class="language-csharp">public class ScoreboardResults { public int timestamp { get; set; } public int total_players { get; set; } public int max_score { get; set; } public Dictionary<string, Player> players { get; set; } }</code>
Sebagai alternatif, atribut DataContract
dan DataMember
boleh mencapai hasil yang serupa dengan menyatakan susunan sifat. Artikel itu mencadangkan meneroka biola demo (pautan tidak disertakan di sini) untuk contoh kod lengkap. Pendekatan ini mengendalikan penyahserialisasian data JSON yang kompleks dan berstruktur tidak konsisten ke dalam objek C# yang ditaip kuat.
Atas ialah kandungan terperinci Bagaimana untuk Menyahsiri Tatasusunan JSON Data Campuran ke dalam Kelas C# yang Ditaip Kuat?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!