|
|
Publisert på 30.05.2018 16:50:17
|
|
|
|

Newtonsoft.JsonSom du sikkert vet, er det vanlige JSON-verktøy for serialisering og deserialisering av JSON
DataContractAttributeSpesifiserer den typen for å definere eller implementere en datakontrakt som kan serialiseres av en serializer som DataContractSerializer. For å gjøre en type serialiserbar, må typeforfatteren definere en datakontrakt for dens type.
støtte på et vanskelig problem,Forelderklassen har [DataContract]-funksjonen, og barneklassen arver foreldreklassen, og alle attributtene til underklassen må serialiseres og deserialiseres med attributtet [DataMember].Siden foreldreklassen er en annens innkapslede dll, kan ikke [DataContract]-funksjonen til foreldreklassen slettes!
Testen er som følger: Test1-klassen har [DataContract]-funksjonen, hvis attributten ikke legger til [DataMember]-funksjonen, vil det føre til at serialisering og deserialisering feiler, som vist i figuren nedenfor:
Vi annoterte [DataContract]-funksjonen til klasse Test1 og fant at den kan serialiseres og deserialiseres normalt, som følger:
Finnes det noen avansert bruk av Newtonsoft.Json som kan ignorere denne funksjonen? Svaret er ja!
Bare bruk Json.Nets OptOut-egenskap. Den vil ha forrang over DataContract.
// Sammendrag: Alle offentlige medlemmer er som standard serialiserte. Medlemmer kan ekskluderes ved bruk av Newtonsoft.Json.JsonIgnoreAttribute eller System.NonSerializedAttribute. Dette er standard mønster for serialisering av medlemmer. OptOut = 0, // Sammendrag: Kun medlemmer merket Newtonsoft.Json.JsonPropertyAttribute eller System.Runtime.Serialization.DataMemberAttribute er serialisert. Denne medlemsserialiseringsmodusen kan også settes ved å tagge klasse med System.Runtime.Serialization.DataContractAttribute. OptIn = 1, // Sammendrag: Alle offentlige og private felt er serialiserte. Medlemmer kan ekskluderes ved bruk av Newtonsoft.Json.JsonIgnoreAttribute eller System.NonSerializedAttribute. Dette mønsteret for medlemsserialisering er også greit Sett dette ved å tagge klassen med System.SerializableAttribute og sette IgnoreSerializableAttribute Sett Newtonsoft.Json.Serialization.DefaultContractResolver til false. Felt = 2
Testkode:
|
Foregående:Overvåk AppDomainsNeste:. .NETs raskeste OOM-objektkartleggingskomponent, Tiny Mapper, i prosjektpraksis
|