Newtonsoft.JsonKaip tikriausiai žinote, dažniausiai naudojami JSON serializavimo ir deserializavimo įrankiai
DataContractAttributeNurodo šį tipą, kad apibrėžtų arba įgyvendintų duomenų sutartį, kurią gali nuosekliai suskirstyti serializatorius, pvz., DataContractSerializer. Kad tipą būtų galima suskirstyti nuosekliai, tipo autorius turi apibrėžti jo tipo duomenų sutartį.
susidūrė su sunkia problema,Pirminė klasė turi [DataContract] funkciją, o antrinė klasė paveldi pirminę klasę, o visi poklasio atributai turi būti suskirstyti į eilutes ir deserializuoti naudojant atributą [DataMember]Kadangi pirminė klasė yra kažkieno inkapsuliuota dll, pirminės klasės funkcijos [DataContract] panaikinti negalima!
Testas yra toks: Test1 klasė turi [DataContract] funkciją, jei atributas neprideda [DataMember] funkcijos, serializavimas ir deserializavimas nepavyks, kaip parodyta paveikslėlyje žemiau:
Mes komentavome Test1 klasės [DataContract] funkciją ir nustatėme, kad ją galima nuosekliai ir deserializuoti įprastai, kaip nurodyta toliau:
Ar yra koks nors išplėstinis Newtonsoft.Json naudojimas, kuris gali ignoruoti šią funkciją? Atsakymas yra taip!
Tiesiog naudokite Json.Net OptOut ypatybę. Ji turės viršenybę prieš "DataContract".
// Anotacija: Visi viešieji nariai pagal numatytuosius nustatymus yra suskirstyti į eilutes. Narius galima pašalinti naudojant Newtonsoft.Json.JsonIgnoreAttribute arba System.NonSerializedAttribute. Tai numatytasis nario serializavimo šablonas. OptOut = 0, // Anotacija: Tik nariai, pažymėti Newtonsoft.Json.JsonPropertyAttribute arba System.Runtime.Serialization.DataMemberAttribute yra serijinis. Šį nario serializavimo režimą taip pat galima nustatyti žymint klasė su System.Runtime.Serialization.DataContractAttribute. OptIn = 1, // Anotacija: Visi viešieji ir privatūs laukai yra serijiniai. Narius galima pašalinti naudojant Newtonsoft.Json.JsonIgnoreAttribute arba System.NonSerializedAttribute. Šis nario serializacijos modelis taip pat tinka Nustatykite tai pažymėdami klasę System.SerializableAttribute ir nustatydami IgnoreSerializableAttribute Nustatykite Newtonsoft.Json.Serialization.DefaultContractResolver į false. Laukai = 2
Bandymo kodas:
|