Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Mensiri Kedua-dua Senarai dan Ahli Kelas Terbitan Menggunakan Json.NET?
Menyesuaikan Json.NET Serialisasi untuk Kelas Senarai Terbitan
Pengenalan
Apabila melanjutkan kelas diperoleh daripada Senarai
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!