Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Mensiri Kelas yang Diperolehi daripada Senarai dalam Json.Net sambil Memelihara Kedua-dua Sifat Tersuai dan Item Senarai?
Json.Net: Mensiri Ahli Kelas Diperoleh daripada Senarai
Json.Net secara lalai memperlakukan kelas yang melaksanakan IEnumerable sebagai tatasusunan. Untuk mengatasi tingkah laku ini, tandakan kelas terbitan dengan atribut [JsonObject] dan [JsonProperty]. Walau bagaimanapun, ini hanya mensiri ahli kelas terbitan, bukan senarai.
Untuk mensiri kedua-dua ahli kelas terbitan dan senarai, sediakan harta awam pada kelas terbitan untuk mendedahkan senarai:
class PagedResult<t> : List<t> { public IEnumerable<t> Items { get { return this; } } }</t></t></t>
Sebagai alternatif, buat JsonConverter tersuai untuk mensirikan semuanya:
class PagedResultConverter<t> : JsonConverter { public override bool CanConvert(Type objectType) { return (objectType == typeof(PagedResult<t>)); } public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) { PagedResult<t> result = (PagedResult<t>)value; JObject jo = new JObject(); jo.Add("Properties", JObject.FromObject(result, serializer)); jo.Add("Items", JArray.FromObject(result.ToArray(), serializer)); jo.WriteTo(writer); } public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) { JObject jo = JObject.Load(reader); PagedResult<t> result = new PagedResult<t>(); jo["Properties"].ToObject<pagedresult>>(serializer); result.AddRange(jo["Items"].ToObject<t>(serializer)); return result; } }</t></pagedresult></t></t></t></t></t></t>
Daftarkan penukar dalam JsonSerializerSettings:
JsonSerializerSettings settings = new JsonSerializerSettings(); settings.Converters.Add(new PagedResultConverter<t>());</t>
Atas ialah kandungan terperinci Bagaimana untuk Mensiri Kelas yang Diperolehi daripada Senarai dalam Json.Net sambil Memelihara Kedua-dua Sifat Tersuai dan Item Senarai?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!