
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!