Menyerikan PagedResult Menggunakan Json.Net
Json.Net merawat kelas yang melaksanakan IEnumerable sebagai tatasusunan. Menghias kelas terbitan dengan [JsonObject] akan menyerikan hanya ahli kelas terbitan, meninggalkan senarai.
Penyelesaian 1: Dedahkan Harta Senarai
Seperti yang dicadangkan oleh Konrad, cipta harta awam pada kelas terbitan untuk mendedahkan list:
class PagedResult<T> : List<T> { public IEnumerable<T> Items { get { return this; } } }
Penyelesaian 2: Custom JsonConverter
Sebagai alternatif, buat JsonConverter tersuai untuk mensiri seluruh objek:
class PagedResultConverter<T> : JsonConverter { // ... (implementation as provided in the answer) ... }
Tambah penukar kepada JsonSerializerSettings:
JsonSerializerSettings settings = new JsonSerializerSettings(); settings.Converters.Add(new PagedResultConverter<T>());
Contoh Penggunaan
Berikut ialah contoh yang menunjukkan penggunaan penukar:
PagedResult<string> result = new PagedResult<string> { "foo", "bar", "baz" }; // ... (populate other properties) ... string json = JsonConvert.SerializeObject(result, settings);
Output:
{ "PageSize": 10, "PageIndex": 0, "TotalItems": 3, "TotalPages": 1, "Items": [ "foo", "bar", "baz" ] }
Atas ialah kandungan terperinci Bagaimana untuk Mensiri Objek PagedResult dengan Json.Net?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!