Dieser Artikel ist ein Spiegelartikel der maschinellen Übersetzung, bitte klicken Sie hier, um zum Originalartikel zu springen.

Ansehen: 33737|Antwort: 2

[Quelle] Newtonsoft.Json ignoriert die DataContract-Funktion

[Link kopieren]
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 überwachen
Nächster:. .NETs schnellste OOM-Objektmapping-Komponente, Tiny Mapper, in der Projektpraxis
Veröffentlicht am 01.06.2018 13:20:10 |
Bestimmen Sie, ob eine JSON-Zeichenkette ein Objekt oder ein Array ist
Newtonsoft.Json.Linq.JToken s = Newtonsoft.Json.Linq.JToken.Parse(str);

Switch (s.Type.ToString())
                {
                    Fall "Objekt":
                        Unterbrechung;
                    Case "Array":
                        Unterbrechung;
                    Standard:
                        Unterbrechung;
                }
Veröffentlicht am 21.08.2020 11:52:32 |
Unterstütze den Vermieter, der ein Meister darin ist, nach Oberschenkeln zu fragen
Verzichtserklärung:
Alle von Code Farmer Network veröffentlichten Software, Programmiermaterialien oder Artikel dienen ausschließlich Lern- und Forschungszwecken; Die oben genannten Inhalte dürfen nicht für kommerzielle oder illegale Zwecke verwendet werden, andernfalls tragen die Nutzer alle Konsequenzen. Die Informationen auf dieser Seite stammen aus dem Internet, und Urheberrechtsstreitigkeiten haben nichts mit dieser Seite zu tun. Sie müssen die oben genannten Inhalte innerhalb von 24 Stunden nach dem Download vollständig von Ihrem Computer löschen. Wenn Ihnen das Programm gefällt, unterstützen Sie bitte echte Software, kaufen Sie die Registrierung und erhalten Sie bessere echte Dienstleistungen. Falls es eine Verletzung gibt, kontaktieren Sie uns bitte per E-Mail.

Mail To:help@itsvse.com