Šis raksts ir mašīntulkošanas spoguļraksts, lūdzu, noklikšķiniet šeit, lai pārietu uz oriģinālo rakstu.

Skats: 33737|Atbildi: 2

[Avots] Newtonsoft.Json ignorē DataContract funkciju

[Kopēt saiti]
Publicēts 30.05.2018 16:50:17 | | | |
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:







Iepriekšējo:Pārraudzīt AppDomains
Nākamo:. .NET ātrākais OOM objektu kartēšanas komponents Tiny Mapper projekta praksē
Publicēts 01.06.2018 13:20:10 |
Nosakiet, vai json virkne ir objekts vai masīvs
Newtonsoft.Json.Linq.JToken s = Newtonsoft.Json.Linq.JToken.Parse(str);

slēdzis (s.Type.ToString())
                {
                    gadījums "Objekts":
                        pārtraukums;
                    gadījums "Masīvs":
                        pārtraukums;
                    Noklusējums:
                        pārtraukums;
                }
Publicēts 21.08.2020 11:52:32 |
Atbalstiet saimnieku ir meistars, kas lūdz augšstilbus
Atruna:
Visa programmatūra, programmēšanas materiāli vai raksti, ko publicē Code Farmer Network, ir paredzēti tikai mācību un pētniecības mērķiem; Iepriekš minēto saturu nedrīkst izmantot komerciāliem vai nelikumīgiem mērķiem, pretējā gadījumā lietotājiem ir jāuzņemas visas sekas. Informācija šajā vietnē nāk no interneta, un autortiesību strīdiem nav nekāda sakara ar šo vietni. Iepriekš minētais saturs ir pilnībā jāizdzēš no datora 24 stundu laikā pēc lejupielādes. Ja jums patīk programma, lūdzu, atbalstiet oriģinālu programmatūru, iegādājieties reģistrāciju un iegūstiet labākus oriģinālus pakalpojumus. Ja ir kādi pārkāpumi, lūdzu, sazinieties ar mums pa e-pastu.

Mail To:help@itsvse.com