Ta članek je zrcalni članek strojnega prevajanja, kliknite tukaj za skok na izvirni članek.

Pogled: 33737|Odgovoriti: 2

[Vir] Newtonsoft.Json ignorira funkcijo DataContract

[Kopiraj povezavo]
Objavljeno na 30. 05. 2018 16:50:17 | | | |
Newtonsoft.JsonKot verjetno veste, pogosto uporabljena orodja za serializacijo in deserializacijo v JSON-u

DataContractAttributeDoloča to vrsto za definiranje ali implementacijo podatkovne pogodbe, ki jo lahko serializira serializator, kot je DataContractSerializer. Da bi bil tip serializiran, mora avtor tipa definirati podatkovno pogodbo za njegov tip.

se je soočil s težko težavo,Nadroditeljski razred ima funkcijo [DataContract], otrok razred pa podeduje nadrejen razred, vsi atributi podrazreda pa morajo biti serializirani in deserializirani z atributom [DataMember]Ker je nadrejen razred enkapsulirani dll nekoga drugega, funkcije [DataContract] nadrejenega razreda ni mogoče izbrisati!

Test je naslednji: Razred Test1 ima funkcijo [DataContract], če atribut ne doda funkcije [DataMember], bo to povzročilo neuspeh serializacije in deserializacije, kot je prikazano na spodnji sliki:




Označili smo lastnost [DataContract] razreda Test1 in ugotovili, da jo je mogoče normalno serializirati in deserializirati, kot sledi:



Ali obstaja kakšna napredna uporaba Newtonsoft.json, ki lahko to funkcijo ignorira? Odgovor je da!

Preprosto uporabi Json.Net-ovo lastnost OptOut. Ta bo imel prednost pred DataContractom.

//
        Povzetek:
        Vsi javni člani so privzeto serializirani. Člane je mogoče izključiti z uporabo Newtonsoft.Json.JsonIgnoreAttribute
        ali System.NonSerializedAttribute. To je privzeti vzorec serializacije članov.
        OptOut = 0,
        //
        Povzetek:
        Samo člani označeni kot Newtonsoft.Json.JsonPropertyAttribute ali System.Runtime.Serialization.DataMemberAttribute
        je serializiran. Ta način serializacije članov je mogoče nastaviti tudi z označevanjem
        razred s System.Runtime.Serialization.DataContractAttribute.
        OptIn = 1,
        //
        Povzetek:
        Vsa javna in zasebna polja so serializirana. Člane je mogoče izključiti z uporabo Newtonsoft.Json.JsonIgnoreAttribute
        ali System.NonSerializedAttribute. Ta vzorec serializacije članov je prav tako v redu
        To nastavite tako, da razred označite s System.SerializableAttribute in nastavite IgnoreSerializableAttribute
        Nastavite Newtonsoft.Json.Serialization.DefaultContractResolver na false.
        Polja = 2


Testna koda:







Prejšnji:Monitor AppDomains
Naslednji:. .NET-ova najhitrejša komponenta za preslikavo objektov v OOM, Tiny Mapper, v projektni praksi
Objavljeno na 1. 06. 2018 13:20:10 |
Določite, ali je nizek json objekt ali polje
Newtonsoft.Json.Linq.JToken s = Newtonsoft.Json.Linq.JToken.Parse(str);

switch (s.Type.ToString())
                {
                    primer "Objekt":
                        premor;
                    primer "Array":
                        premor;
                    Privzeto:
                        premor;
                }
Objavljeno na 21. 08. 2020 11:52:32 |
Podpora, da je najemodajalec mojster v tem, da zahteva stegna
Disclaimer:
Vsa programska oprema, programski materiali ali članki, ki jih izdaja Code Farmer Network, so namenjeni zgolj učnim in raziskovalnim namenom; Zgornja vsebina ne sme biti uporabljena v komercialne ali nezakonite namene, sicer uporabniki nosijo vse posledice. Informacije na tej strani prihajajo z interneta, spori glede avtorskih pravic pa nimajo nobene zveze s to stranjo. Zgornjo vsebino morate popolnoma izbrisati z računalnika v 24 urah po prenosu. Če vam je program všeč, podprite pristno programsko opremo, kupite registracijo in pridobite boljše pristne storitve. Če pride do kakršne koli kršitve, nas prosimo kontaktirajte po elektronski pošti.

Mail To:help@itsvse.com