Rumah > pembangunan bahagian belakang > C++ > Bagaimana untuk Menyahsiri Tatasusunan JSON Data Campuran ke dalam Kelas C# yang Ditaip Kuat?

Bagaimana untuk Menyahsiri Tatasusunan JSON Data Campuran ke dalam Kelas C# yang Ditaip Kuat?

Linda Hamilton
Lepaskan: 2025-01-24 04:06:09
asal
551 orang telah melayarinya

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.

How to Deserialize a JSON Array of Mixed Data into Strongly Typed C# Classes?

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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!

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