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

Bagaimana untuk Menyahsiri Tatasusunan JSON bagi Nilai Jenis Campuran ke dalam Kelas Data C# Ditaip Kuat?

Patricia Arquette
Lepaskan: 2025-01-24 04:26:10
asal
979 orang telah melayarinya

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

Nyahserialisasi tatasusunan nilai dengan corak tetap kepada kelas data yang ditaip kuat

Soalan:

Terdapat cabaran apabila menyahsiri data JSON dalam format tertentu ke dalam kelas data yang ditaip kuat. Data mengandungi tatasusunan pemain dengan rentetan bercampur dan nilai integer, dan kelas pemain terdiri sepenuhnya daripada nilai yang tidak dinamakan, dalam susunan tetap.

Penyelesaian:

Gabungan penukar tersuai dan atribut kontrak data membolehkan penyahserikatan yang cekap:

  1. Buat penukar tersuai:

    Laksanakan penukar tersuai yang menukar objek kepada tatasusunan:

    public class ObjectToArrayConverter<T> : JsonConverter
    {
        // 实现 WriteJson 和 ReadJson 函数
    }
    Salin selepas log masuk
  2. Gunakan penukar tersuai dan sifat kontrak data pada Pemain:

    Gunakan penukar tersuai pada kelas Pemain dan gunakan atribut kontrak data untuk menentukan susunan sifatnya:

    [JsonConverter(typeof(ObjectToArrayConverter<Player>))]
    [DataContract]
    public class Player
    {
        [DataMember(Order = 1)]
        public int UniqueID { get; set; }
        [DataMember(Order = 2)]
        public string PlayerDescription { get; set; }
    }
    Salin selepas log masuk
  3. Ubah suai objek akar kepada kamus:

    Tukar jenis atribut pemain dalam objek akar kepada kamus, menggunakan nama pengguna pemain sebagai kunci:

    public class ScoreboardResults
    {
        // ...
        public Dictionary<string, Player> players { get; set; }
    }
    Salin selepas log masuk

Contoh:

Contoh kod berikut menunjukkan penyahserikatan menggunakan penyelesaian ini:

using Newtonsoft.Json;

var json = "{...}";
var results = JsonConvert.DeserializeObject<ScoreboardResults>(json);
Salin selepas log masuk

Arahan lain:

  • Jika menggunakan atribut kontrak data, ingat untuk menambah rujukan pada ruang nama System.Runtime.Serialization.
  • Penyelesaian ini menganggap skema tetap dengan nama sifat yang diketahui. Untuk mod dinamik, teknik penyahserikatan yang lebih maju mungkin diperlukan.

Atas ialah kandungan terperinci Bagaimana untuk Menyahsiri Tatasusunan JSON bagi Nilai Jenis Campuran ke dalam Kelas Data C# Ditaip Kuat?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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