|
|
Pubblicato su 30/05/2018 16:50:17
|
|
|
|

Newtonsoft.JsonCome probabilmente sapete, gli strumenti di serializzazione e deserializzazione JSON sono comunemente usati
DataContrattoAttributoSpecifica quel tipo per definire o implementare un contratto dati che può essere serializzato da un serializer come DataContractSerializer. Per rendere un tipo serializzabile, l'autore del tipo deve definire un contratto dati per il suo tipo.
incontrò un problema difficile,La classe genitore ha la funzione [DataContract], e la classe figlia eredita la classe genitore, e tutti gli attributi della sottoclasse devono essere serializzati e deerializzati con l'attributo [DataMember]Poiché la classe madre è la dll incapsulata di qualcun altro, la funzione [DataContract] della classe madre non può essere cancellata!
Il test è il seguente: la classe Test1 ha la funzione [DataContract], se l'attributo non aggiunge la funzione [DataMember], causerà il fallimento della serializzazione e della deserializzazione, come mostrato nella figura sottostante:
Abbiamo annotato la caratteristica [DataContract] della classe Test1 e abbiamo scoperto che può essere serializzata e deerializzata normalmente, come segue:
Esiste qualche uso avanzato di Newtonsoft.Json che possa ignorare questa funzione? La risposta è sì!
Basta usare la proprietà OptOut di Json.Net. Avrà la precedenza sul DataContract.
// Astratto: Tutti i membri pubblici sono serializzati di default. I membri possono essere esclusi usando Newtonsoft.Json.JsonIgnoreAttribute o System.NonSerializedAttribute. Questo è il pattern predefinito di serializzazione dei membri. OptOut = 0, // Astratto: Solo i membri etichettati Newtonsoft.Json.JsonPropertyAttribute o System.Runtime.Serialization.DataMemberAttribute è serializzato. Questa modalità di serializzazione dei membri può essere impostata anche tramite tagging classe con System.Runtime.Serialization.DataContractAttribute. OptIn = 1, // Astratto: Tutti i campi pubblici e privati sono serializzati. I membri possono essere esclusi usando Newtonsoft.Json.JsonIgnoreAttribute o System.NonSerializedAttribute. Anche questo schema di serializzazione dei membri va bene Imposta questo taggando la classe con System.SerializableAttribute e impostando IgnoreSerializableAttribute Imposta Newtonsoft.Json.Serialization.DefaultContractResolver su false. Campi = 2
Codice di test:
|
Precedente:Monitorare AppDomainsProssimo:. Il componente di mappatura OOM più veloce di .NET, Tiny Mapper, nella pratica del progetto
|