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:
<code class="language-csharp">class Config { public Fizz ObsoleteSetting { get; set; } public bool ShouldSerializeObsoleteSetting() { return false; } }</code>
Kaedah 2: Gunakan JObject untuk mengendalikan JSON
Selepas menyahsiri objek ke JObject, alih keluar sifat secara manual sebelum membuat serial:
<code class="language-csharp">JObject jo = JObject.FromObject(config); jo["ObsoleteSetting"].Parent.Remove(); string json = jo.ToString();</code>
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:
<code class="language-csharp">class Config { [JsonIgnore] public Fizz ObsoleteSetting { get; set; } [JsonProperty("ObsoleteSetting")] private Fizz ObsoleteSettingAlternateSetter { set { ObsoleteSetting = value; } } }</code>
b. Gunakan setter awam untuk mengabaikan sifat
Sebagai alternatif, gunakan penetap harta awam dengan [JsonProperty]
dan kecualikan pengambilnya menggunakan [JsonIgnore]
:
<code class="language-csharp">class Config { [JsonProperty("ObsoleteSetting")] public Fizz ObsoleteSetting { set; private get; } }</code>
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!