Denne artikkelen er en speilartikkel om maskinoversettelse, vennligst klikk her for å hoppe til originalartikkelen.

Utsikt: 33737|Svare: 2

[Kilde] Newtonsoft.Json ignorerer DataContract-funksjonen

[Kopier lenke]
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 AppDomains
Neste:. .NETs raskeste OOM-objektkartleggingskomponent, Tiny Mapper, i prosjektpraksis
Publisert på 01.06.2018 13:20:10 |
Bestem om en json-streng er et objekt eller et array
Newtonsoft.Json.Linq.JToken s = Newtonsoft.Json.Linq.JToken.Parse(str);

switch (s.Type.ToString())
                {
                    kasus "Objekt":
                        pause;
                    Case "Array":
                        pause;
                    Standard:
                        pause;
                }
Publisert på 21.08.2020 11:52:32 |
Støtt utleieren er en mester i å be om lår
Ansvarsfraskrivelse:
All programvare, programmeringsmateriell eller artikler publisert av Code Farmer Network er kun for lærings- og forskningsformål; Innholdet ovenfor skal ikke brukes til kommersielle eller ulovlige formål, ellers skal brukerne bære alle konsekvenser. Informasjonen på dette nettstedet kommer fra Internett, og opphavsrettstvister har ingenting med dette nettstedet å gjøre. Du må fullstendig slette innholdet ovenfor fra datamaskinen din innen 24 timer etter nedlasting. Hvis du liker programmet, vennligst støtt ekte programvare, kjøp registrering, og få bedre ekte tjenester. Hvis det foreligger noen krenkelse, vennligst kontakt oss på e-post.

Mail To:help@itsvse.com