Rumah > pembangunan bahagian belakang > C++ > Bagaimana untuk Mensiri Objek PagedResult dengan Json.Net?

Bagaimana untuk Mensiri Objek PagedResult dengan Json.Net?

Mary-Kate Olsen
Lepaskan: 2025-01-07 13:12:41
asal
573 orang telah melayarinya

How to Serialize a PagedResult Object with Json.Net?

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; } }
}
Salin selepas log masuk

Penyelesaian 2: Custom JsonConverter

Sebagai alternatif, buat JsonConverter tersuai untuk mensiri seluruh objek:

class PagedResultConverter<T> : JsonConverter
{
    // ... (implementation as provided in the answer) ...
}
Salin selepas log masuk

Tambah penukar kepada JsonSerializerSettings:

JsonSerializerSettings settings = new JsonSerializerSettings();
settings.Converters.Add(new PagedResultConverter<T>());
Salin selepas log masuk

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);
Salin selepas log masuk

Output:

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

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!

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