|
|
Yayınlandı 30.05.2018 16:50:17
|
|
|
|

Newtonsoft.JsonMuhtemelen bildiğiniz gibi, yaygın kullanılan JSON serileştirme ve seri kaldırma araçları
DataContractAttributeDataContractSerializer gibi bir serilikleyici tarafından serileştirilebilen bir veri sözleşmesini tanımlamak veya uygulamak için bu türü belirtir. Bir tipin serileştirilebilir olması için, tür yazarı onun türü için bir veri sözleşmesi tanımlamalıdır.
zor bir sorunla karşılaştı,Ana sınıf [DataContract] özelliğine sahiptir ve alt sınıf ana sınıfı devralır ve alt sınıfın tüm öznitelikleri [DataMember] özniteliğiyle serialize edilip serilikten çıkarılması gerekirAna sınıf başkasının kapsüllenmiş dll'si olduğundan, ana sınıfın [DataContract] özelliği silinemez!
Test şöyledir: Test1 sınıfı [DataContract] özelliğine sahiptir, eğer öznitelik [DataMember] özelliğini eklemezse, serileştirme ve serilikten çıkarmanın başarısız olmasına neden olur, aşağıdaki şekilde gösterildiği gibi:
Test1 sınıfının [DataContract] özelliğini açıklama yaptık ve bunun normal şekilde serileştirilip serilikten çıkarılabildiğini gördük, aşağıdaki gibi:
Newtonsoft.json'un bu özelliği görmezden gelebilecek gelişmiş bir kullanımı var mı? Cevap evet!
Sadece Json.Net'in OptOut özelliğini kullanın. DataContract'tan öncelikli olacak.
// Özet: Tüm kamuya açık üyeler varsayılan olarak serileştirilir. Üyeler Newtonsoft.Json.JsonIgnoreAttribute kullanılarak hariç tutulabilir. veya System.NonSerializedAttribute. Bu, varsayılan üye serileştirme desenidir. OptOut = 0, // Özet: Sadece Newtonsoft.Json.JsonPropertyAttribute veya System.Runtime.Serialization.DataMemberAttribute etiketli üyeler seri olarak hazırlanıyor. Bu üye serileştirme modu etiketleme ile de ayarlanabilir sınıfı System.Runtime.Serialization.DataContractAttribute ile birlikte kullanır. OptIn = 1, // Özet: Tüm kamu ve özel alanlar seri olarak yayımlanmıştır. Üyeler Newtonsoft.Json.JsonIgnoreAttribute kullanılarak hariç tutulabilir. veya System.NonSerializedAttribute. Bu üye serileştirme deseni de gayet iyi Bunu, sınıfı System.SerializableAttribute ile etiketleyerek ve IgnoreSerializableAttribute olarak ayarlayın Newtonsoft.Json.Serialization.DefaultContractResolver false olarak ayarlan. Alanlar = 2
Test kodu:
|
Önceki:AppDomains MonitoriÖnümüzdeki:. .NET'in en hızlı OOM nesne eşleme bileşeni olan Tiny Mapper, proje uygulamasında
|