Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Mensiri Kedua-dua Senarai dan Ahli Kelas Terbitan Menggunakan Json.NET?

Bagaimanakah Saya Boleh Mensiri Kedua-dua Senarai dan Ahli Kelas Terbitan Menggunakan Json.NET?

Patricia Arquette
Patricia Arquetteasal
2025-01-07 13:01:41881semak imbas

How Can I Serialize Both a List and Derived Class Members Using Json.NET?

Menyesuaikan Json.NET Serialisasi untuk Kelas Senarai Terbitan

Pengenalan

Apabila melanjutkan kelas diperoleh daripada Senarai, ia boleh menjadi mencabar untuk mengendalikan kedua-dua siri senarai dan ahli tambahan dalam kelas terbitan. Secara lalai, Json.Net menganggap pelaksanaan IEnumerable sebagai tatasusunan dan hanya mensiri senarai semasa penyahsirilan.

Pendekatan untuk Mensiri Kedua-dua Senarai dan Ahli Kelas Terbitan

Terdapat dua utama pendekatan untuk menangani isu ini:

Harta Awam Pendedahan

Satu pilihan ialah mencipta harta awam dalam kelas terbitan yang mendedahkan senarai. Dengan berbuat demikian, Json.Net akan mengenali harta tersebut dan mensirikannya dan ahli kelas terbitan. Walau bagaimanapun, pendekatan ini boleh memperkenalkan kerumitan yang tidak perlu jika senarai hanya boleh diakses secara dalaman.

JsonConverter Tersuai

Sebagai alternatif, JsonConverter tersuai boleh dilaksanakan untuk mengawal proses pesirilan . Ini membolehkan lebih fleksibiliti dalam menentukan tingkah laku bersiri yang diingini. Berikut ialah contoh penukar untuk PagedResult:

public class PagedResultConverter<T> : JsonConverter
{
    // ... Implementation ...
}

Dalam penukar, anda boleh mengawal pensirilan dan penyahsirilan senarai dan ahli kelas terbitan secara bebas.

Penggunaan JsonConverter Tersuai

Untuk digunakan penukar tersuai, ia mesti disertakan dalam JsonSerializerSettings:

JsonSerializerSettings settings = new JsonSerializerSettings();
settings.Converters.Add(new PagedResultConverter<string>());
settings.Formatting = Formatting.Indented;

Contoh Output Menggunakan Penukar Tersuai

Dengan penukar tersuai tersedia, output JSON berikut akan dijana semasa bersiri PagedResult:

{
  "PageSize": 10,
  "PageIndex": 0,
  "TotalItems": 3,
  "TotalPages": 1,
  "Items": [
    "foo",
    "bar",
    "baz"
  ]
}

Pendekatan ini membolehkan kawalan yang lebih besar ke atas proses penyirian dan menyelesaikan isu penyirian kedua-dua senarai dan ahli kelas yang diperolehi dengan berkesan.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mensiri Kedua-dua Senarai dan Ahli Kelas Terbitan Menggunakan Json.NET?. 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