Siri menggunakan Json.Net tidak termasuk atribut
Apabila mensiri objek menggunakan Json.Net, sesetengah sifat mungkin diperlukan semasa menyahsiri tetapi tidak semasa mensiri. Artikel ini meneroka beberapa cara untuk melaksanakan senario ini:
Kaedah 1: Siri bersyarat
Json.Net menyokong kaedah ShouldSerialize, yang boleh mengawal bersiri secara bersyarat. Tentukan kaedah ShouldSerialize untuk sifat yang diperlukan dan tetapkannya untuk mengembalikan palsu:
class Config { public Fizz ObsoleteSetting { get; set; } public bool ShouldSerializeObsoleteSetting() { return false; } }
Kaedah 2: Gunakan JObject untuk mengendalikan JSON
Selepas menyahsiri objek ke JObject, alih keluar sifat secara manual sebelum membuat serial:
JObject jo = JObject.FromObject(config); jo["ObsoleteSetting"].Parent.Remove(); string json = jo.ToString();
Kaedah 3: Gunakan atribut
a. Abaikan hartanah menggunakan setter peribadi
Gunakan atribut [JsonIgnore]
untuk mengecualikan atribut untuk bersiri. Gunakan [JsonProperty]
untuk memohon kepada penetap harta persendirian ganti:
class Config { [JsonIgnore] public Fizz ObsoleteSetting { get; set; } [JsonProperty("ObsoleteSetting")] private Fizz ObsoleteSettingAlternateSetter { set { ObsoleteSetting = value; } } }
b. Gunakan setter awam untuk mengabaikan sifat
Sebagai alternatif, gunakan penetap harta awam dengan [JsonProperty]
dan kecualikan pengambilnya menggunakan [JsonIgnore]
:
class Config { [JsonProperty("ObsoleteSetting")] public Fizz ObsoleteSetting { set; private get; } }
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengecualikan Hartanah daripada Pensirian dengan Json.Net?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!