See artikkel on masintõlke peegelartikkel, palun klõpsake siia, et hüpata algse artikli juurde.

Vaade: 33737|Vastuse: 2

[Allikas] Newtonsoft.Json ignoreerib DataContract funktsiooni

[Kopeeri link]
Postitatud 30.05.2018 16:50:17 | | | |
Newtonsoft.JSONNagu sa ilmselt tead, on levinud JSON-i serialiseerimise ja deserialiseerimise tööriistad

DataContractAttributeMäärab tüübi, mis määratleb või rakendab andmelepingut, mida saab serialiseerija, näiteks DataContractSerializer, abil serialiseerida. Tüübi serialiseerimiseks peab tüübi autor määratlema selle tüübi jaoks andmelepingu.

sattus raskesse probleemi,Vanemklassil on [DataContract] funktsioon ning alamklass pärib vanemklassi ning kõik alamklassi atribuudid tuleb seriaaliseerida ja deserialiseerida [DataMember] atribuudigaKuna vanemklass on kellegi teise kapseldatud dll, ei saa vanemklassi [DataContract] funktsiooni kustutada!

Test on järgmine: Test1 klassil on [DataContract] funktsioon, kui atribuut ei lisa [DataMember] funktsiooni, põhjustab see serialiseerimise ja deserialiseerimise ebaõnnestumise, nagu alloleval joonisel näidatud:




Me annoteerisime klassi Test1 [DataContract] funktsiooni ja leidsime, et seda saab tavapäraselt serialiseerida ja deserialiseerida järgmiselt:



Kas Newtonsoft.JSON-il on mõni keerukas kasutus, mis seda funktsiooni ignoreerib? Vastus on jah!

Kasuta lihtsalt Json.Neti OptOut omadust. See saab olema DataContractist tähtsam.

//
        Kokkuvõte:
        Kõik avalikud liikmed on vaikimisi seriaaliseeritud. Liikmeid saab välistada Newtonsoft.Json.JsonIgnoreAttribute abil
        või System.NonSerializedAttribute. See on vaikimisi liikmete serialiseerimise muster.
        OptOut = 0,
        //
        Kokkuvõte:
        Ainult liikmed, mis on märgistatud Newtonsoft.Json.JsonPropertyAttribute või System.Runtime.Serialization.DataMemberAttribute
        on järjejuttu. Seda liikme serialiseerimise režiimi saab määrata ka märgistamise teel
        klassiga System.Runtime.Serialization.DataContractAttribute.
        OptIn = 1,
        //
        Kokkuvõte:
        Kõik avalikud ja erasektorid on seriaalis. Liikmeid saab välistada Newtonsoft.Json.JsonIgnoreAttribute abil
        või System.NonSerializedAttribute. See liikmete seeriastamise muster on samuti täiesti okei
        Määra see, märgistades klassi System.SerializableAttribute'iga ja määrates IgnoreSerializableAttribute'i
        Sea Newtonsoft.Json.Serialization.DefaultContractResolver väärtuseks false.
        Väljad = 2


Testkood:







Eelmine:Jälgi AppDomains
Järgmine:. .NET-i kiireim OOM objektide kaardistamise komponent, Tiny Mapper, projektipraktikas
Postitatud 01.06.2018 13:20:10 |
Määrake, kas json-string on objekt või massiivi
Newtonsoft.Json.Linq.JToken s = Newtonsoft.Json.Linq.JToken.Parse(str);

lüliti (s.Type.ToString())
                {
                    juhtum "Objekt":
                        paus;
                    juhtum "Array":
                        paus;
                    vaikimisi:
                        paus;
                }
Postitatud 21.08.2020 11:52:32 |
Toeta üürileandjat – ta on meister reite küsimises
Disclaimer:
Kõik Code Farmer Networki poolt avaldatud tarkvara, programmeerimismaterjalid või artiklid on mõeldud ainult õppimiseks ja uurimistööks; Ülaltoodud sisu ei tohi kasutada ärilistel ega ebaseaduslikel eesmärkidel, vastasel juhul kannavad kasutajad kõik tagajärjed. Selle saidi info pärineb internetist ning autoriõiguste vaidlused ei ole selle saidiga seotud. Ülaltoodud sisu tuleb oma arvutist täielikult kustutada 24 tunni jooksul pärast allalaadimist. Kui sulle programm meeldib, palun toeta originaaltarkvara, osta registreerimist ja saa paremaid ehtsaid teenuseid. Kui esineb rikkumist, palun võtke meiega ühendust e-posti teel.

Mail To:help@itsvse.com