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
Patricia Arquetteasal
2025-01-24 04:26:10922semak imbas

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:

    <code class="language-c#">public class ObjectToArrayConverter<T> : JsonConverter
    {
        // 实现 WriteJson 和 ReadJson 函数
    }</code>
  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:

    <code class="language-c#">[JsonConverter(typeof(ObjectToArrayConverter<Player>))]
    [DataContract]
    public class Player
    {
        [DataMember(Order = 1)]
        public int UniqueID { get; set; }
        [DataMember(Order = 2)]
        public string PlayerDescription { get; set; }
    }</code>
  3. Ubah suai objek akar kepada kamus:

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

    <code class="language-c#">public class ScoreboardResults
    {
        // ...
        public Dictionary<string, Player> players { get; set; }
    }</code>

Contoh:

Contoh kod berikut menunjukkan penyahserikatan menggunakan penyelesaian ini:

<code class="language-c#">using Newtonsoft.Json;

var json = "{...}";
var results = JsonConvert.DeserializeObject<ScoreboardResults>(json);</code>

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:
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