Newtonsoft.JsonKā jūs droši vien zināt, bieži izmantotie JSON serializācijas un deserializācijas rīki
DataContractAttributeNorāda šo tipu, lai definētu vai ieviestu datu līgumu, ko var serializēt, piemēram, DataContractSerializer. Lai padarītu tipu serializējamu, tipa autoram ir jādefinē tā tipa datu līgums.
saskārās ar sarežģītu problēmu,Vecākklasei ir līdzeklis [DataContract], un bērnklase pārmanto vecākklasi, un visi apakšklases atribūti ir jāserializē un deserializējami ar atribūtu [DataMember]Tā kā vecākklase ir kāda cita iekapsulēta dll, vecākklases līdzekli [DataContract] nevar izdzēst!
Tests ir šāds: Test1 klasei ir līdzeklis [DataContract], ja atribūts nepievieno līdzekli [DataMember], tas izraisīs serializācijas un deserializācijas neveiksmi, kā parādīts attēlā zemāk:
Mēs anotējām Test1 klases funkciju [DataContract] un konstatējām, ka to var normāli serializēt un deserializēt šādi:
Vai ir kāds uzlabots Newtonsoft.Json lietojums, kas var ignorēt šo funkciju? Atbilde ir jā!
Vienkārši izmantojiet Json.Net OptOut rekvizītu. Tam būs prioritāte pār DataContract.
// Anotācija: Visi publiskie dalībnieki pēc noklusējuma tiek serializēti. Dalībniekus var izslēgt, izmantojot Newtonsoft.Json.JsonIgnoreAttribute vai System.NonSerializedAttribute. Šis ir noklusējuma dalībnieku serializācijas modelis. Atteikšanās = 0, // Anotācija: Tikai dalībnieki ar apzīmējumu Newtonsoft.Json.JsonPropertyAttribute vai System.Runtime.Serialization.DataMemberAttribute ir sērijveidā. Šo dalībnieku serializācijas režīmu var iestatīt arī, izmantojot atzīmes klase ar System.Runtime.Serialization.DataContractAttribute. OptIn = 1, // Anotācija: Visi publiskie un privātie lauki ir sērijveidā. Dalībniekus var izslēgt, izmantojot Newtonsoft.Json.JsonIgnoreAttribute vai System.NonSerializedAttribute. Šis dalībnieku serializācijas modelis ir arī labs Iestatiet to, atzīmējot klasi ar System.SerializableAttribute un iestatot IgnoreSerializableAttribute Iestatiet Newtonsoft.Json.Serialization.DefaultContractResolver vērtību false. Lauki = 2
Testa kods:
|