|
|
Közzétéve 2018. 05. 30. 16:50:17
|
|
|
|

Newtonsoft.jsonAhogy valószínűleg tudod, a JSON serializációs és deserializációs eszközök gyakran használják
DataContractAttributeMegadja azt a típust, amely egy olyan adatszerződés definiálására vagy megvalósítására, amelyet egy serializer, például DataContractSerializer képes sorializálni. Ahhoz, hogy egy típus serializálható legyen, a típusszerzőnek adatszerződést kell definiálnia a típusához.
nehéz problémába ütköztek,Az anyaosztály rendelkezik a [DataContract] funkcióval, a gyermek osztály örökli az anyaosztályt, és az alosztály összes attribútumát a [DataMember] attribútummal kell sorolni és deserializálniMivel az anyaosztály valaki más kapszulált dll-je, az anyaosztály [DataContract] funkciója nem törölhető!
A teszt a következő: A Test1 osztály rendelkezik a [DataContract] funkcióval, ha az attribútum nem adja hozzá a [DataMember] funkciót, akkor a serializáció és a deserializáció sikertelenséget okoz, ahogy az alábbi ábrán látható:
Annotáltuk a Test1 osztály [DataContract] funkcióját, és azt találtuk, hogy az normálisan sorializálható és deserializálható a következőképpen is:
Van olyan fejlett Newtonsoft.json használat, amely figyelmen kívül hagyhatja ezt a funkciót? A válasz igen!
Csak használd a Json.Net OptOut funkcióját. Ez elsőbbséget fog tenni a DataContract felett.
// Kivonat: Minden nyilvános tag alapértelmezetten sorozatosítható. A tagok kizárhatók Newtonsoft.Json.JsonIgnoreAttribute használatával vagy System.NonSerializedAttribute. Ez az alapértelmezett tag serializációs mintázat. OptOut = 0, // Kivonat: Csak a Newtonsoft.Json.JsonPropertyAttribute vagy System.Runtime.Serialization.DataMemberAttribute címkéző tagok sorozatos. Ez a tag serializációs mód címkézéssel is beállítható. System.Runtime.Serialization.DataContractAttribute kódol. OptIn = 1, // Kivonat: Minden nyilvános és magánterület sorozatos. A tagok kizárhatók Newtonsoft.Json.JsonIgnoreAttribute használatával vagy System.NonSerializedAttribute. Ez a tag sorozatolási minta is rendben van Ezt úgy állítsuk be, hogy az osztályt a System.SerializableAttribute címkével jelöljük, és beállítod az IgnoreSerializableAttribute-t Állítsa be Newtonsoft.Json.Serialization.DefaultContractResolver false re. Mezők = 2
Tesztkód:
|
Előző:AppDomains monitorálásaKövetkező:. A .NET leggyorsabb OOM objektumleképező komponense, a Tiny Mapper, a projektgyakorlatban
|