|
|
Veröffentlicht am 30.05.2018 16:50:17
|
|
|
|

Newtonsoft.JsonWie Sie wahrscheinlich wissen, werden häufig verwendete JSON-Serialisierungs- und Deserialisierungstools verwendet
DataContractAttributeSpezifiziert diesen Typ, um einen Datenvertrag zu definieren oder zu implementieren, der von einem Serializer wie DataContractSerializer serialisiert werden kann. Um einen Typ serialisierbar zu machen, muss der Typautor einen Datenvertrag für seinen Typ definieren.
auf ein schwieriges Problem stieß,Die Elternklasse besitzt die Funktion [DataContract], und die Kindklasse erbt die Elternklasse, und alle Attribute der Unterklasse müssen mit dem Attribut [DataMember] serialisiert und deserialisiert werdenDa die Elternklasse die gekapselte DLL einer anderen Person ist, kann die [DataContract]-Funktion der Elternklasse nicht gelöscht werden!
Der Test sieht wie folgt aus: Die Test1-Klasse besitzt die [DataContract]-Funktion; wenn das Attribut das [DataMember]-Feature nicht hinzufügt, führt dies zum Fehlschlagen der Serialisierung und Deserialisierung, wie in der untenstehenden Abbildung gezeigt:
Wir haben die [DataContract]-Funktion der Klasse Test1 annotiert und festgestellt, dass sie normal serialisiert und deserialisiert werden kann, wie folgt:
Gibt es eine fortgeschrittene Nutzung von Newtonsoft.Json, die diese Funktion ignorieren kann? Die Antwort lautet ja!
Benutze einfach die OptOut-Eigenschaft von Json.Net. Er hat Vorrang vor dem DataContract.
// Zusammenfassung: Alle öffentlichen Mitglieder sind standardmäßig serialisiert. Mitglieder können mit Newtonsoft.Json.JsonIgnoreAttribute ausgeschlossen werden oder System.NonSerializedAttribute. Dies ist das Standard-Muster der Mitgliederserialisierung. OptOut = 0, // Zusammenfassung: Nur Mitglieder mit der Bezeichnung Newtonsoft.Json.JsonPropertyAttribute oder System.Runtime.Serialization.DataMemberAttribute ist fortlaufend. Dieser Mitgliederserialisierungsmodus kann auch durch Tagging eingestellt werden Klasse mit System.Runtime.Serialization.DataContractAttribute. OptIn = 1, // Zusammenfassung: Alle öffentlichen und privaten Bereiche sind serialisiert. Mitglieder können mit Newtonsoft.Json.JsonIgnoreAttribute ausgeschlossen werden oder System.NonSerializedAttribute. Dieses Muster der Mitgliederserialisierung ist ebenfalls in Ordnung Setzen Sie dies, indem Sie die Klasse mit System.SerializableAttribute taggen und das IgnoreSerializableAttribute setzen Setze Newtonsoft.Json.Serialization.DefaultContractResolver auf false. Felder = 2
Testcode:
|
Vorhergehend:AppDomains überwachenNächster:. .NETs schnellste OOM-Objektmapping-Komponente, Tiny Mapper, in der Projektpraxis
|