Bu makale makine çevirisi ayna makalesidir, orijinal makaleye geçmek için lütfen buraya tıklayın.

Görünüm: 33737|Yanıt: 2

[Kaynak] Newtonsoft.Json, DataContract özelliğini görmezden geliyor

[Bağlantıyı kopyala]
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
Yayınlandı 1.06.2018 13:20:10 |
Bir json dizisinin bir nesne mi yoksa dizi mi olduğunu belirleyin
Newtonsoft.Json.Linq.JToken s = Newtonsoft.Json.Linq.JToken.Parse(str);

switch (s.Type.ToString())
                {
                    vaka "Nesne":
                        mola;
                    vaka "Dizi":
                        mola;
                    Varsayılan:
                        mola;
                }
Yayınlandı 21.08.2020 11:52:32 |
Destek ol, ev sahibi uyluk istemede ustadır
Feragatname:
Code Farmer Network tarafından yayımlanan tüm yazılım, programlama materyalleri veya makaleler yalnızca öğrenme ve araştırma amaçları içindir; Yukarıdaki içerik ticari veya yasa dışı amaçlarla kullanılamaz, aksi takdirde kullanıcılar tüm sonuçları ödemelidir. Bu sitedeki bilgiler internetten alınmakta olup, telif hakkı anlaşmazlıklarının bu siteyle hiçbir ilgisi yoktur. Yukarıdaki içeriği indirmeden sonraki 24 saat içinde bilgisayarınızdan tamamen silmelisiniz. Programı beğendiyseniz, lütfen orijinal yazılımı destekleyin, kayıt satın alın ve daha iyi orijinal hizmetler alın. Herhangi bir ihlal olursa, lütfen bizimle e-posta yoluyla iletişime geçin.

Mail To:help@itsvse.com