Rumah > pembangunan bahagian belakang > C++ > Bagaimana untuk Mensiri Kelas Senarai Terbitan dalam Json.Net?

Bagaimana untuk Mensiri Kelas Senarai Terbitan dalam Json.Net?

Barbara Streisand
Lepaskan: 2025-01-07 12:56:40
asal
434 orang telah melayarinya

How to Serialize Derived List Classes in Json.Net?

Memahami Cabaran Mensiri Kelas Senarai Terbitan dalam Json.Net

Apabila bekerja dengan kelas yang terbit daripada List, seperti a PagedResult kelas, anda mungkin menghadapi masalah dengan siri Json.Net. Secara lalai, Json.Net memperlakukan kelas yang melaksanakan IEnumerable sebagai tatasusunan. Walau bagaimanapun, menandakan kelas terbitan dengan atribut [JsonObject] dan [JsonProperty] hanya menyerikan ahli kelas terbitan, tidak termasuk senarai itu sendiri.

Mengatasi Dilema: Dua Pendekatan

Untuk menyelesaikan masalah ini, anda mempunyai dua pilihan:

Pilihan 1: Dedahkan Senarai sebagai Harta Awam

Anda boleh mencipta harta awam dalam kelas terbitan anda untuk mendedahkan senarai itu. Contohnya, dalam PagedResult, anda boleh menambah senarai awam harta Item { dapat; set; }. Ini membolehkan kedua-dua ahli kelas terbitan dan senarai itu disirikan.

Pilihan 2: Gunakan JsonConverter Tersuai

Sebagai alternatif, anda boleh menulis JsonConverter tersuai untuk dikendalikan siri seperti yang dikehendaki. Berikut ialah contoh penukar untuk PagedResult:

class PagedResultConverter<T> : JsonConverter
{
    // Override methods for writing and reading JSON
    // For brevity, only the `WriteJson` method is shown here
    
    public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
    {
        PagedResult<T> result = (PagedResult<T>)value;
        // Create a JSON object to represent the PagedResult
        // Add both derived class members and list items to the object
        // Write the object to the writer
    }
}
Salin selepas log masuk

Dalam penukar ini, kami mempunyai kawalan penuh ke atas proses bersiri, memastikan kedua-dua ahli kelas terbitan dan senarai disertakan dalam output JSON.

Demo dan Kesimpulan

Berikut ialah tunjuk cara yang menggambarkan penukar tersuai dalam tindakan:

// Assume a `PagedResult<string>` class definition
JsonSerializerSettings settings = new JsonSerializerSettings();
settings.Converters.Add(new PagedResultConverter<string>());
string json = JsonConvert.SerializeObject(result, settings);
Salin selepas log masuk

Dengan menggunakan mana-mana pendekatan, anda boleh mensiri kedua-dua ahli kelas terbitan dan senarai dengan berkesan, memenuhi pesirilan anda keperluan dalam Json.Net.

Atas ialah kandungan terperinci Bagaimana untuk Mensiri Kelas Senarai Terbitan dalam Json.Net?. 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