Artikel ini adalah artikel cermin dari terjemahan mesin, silakan klik di sini untuk melompat ke artikel aslinya.

Melihat: 33737|Jawab: 2

[Sumber] Newtonsoft.Json mengabaikan fitur DataContract

[Salin tautan]
Diposting pada 30/05/2018 16.50.17 | | | |
Newtonsoft.JsonSeperti yang mungkin Anda ketahui, alat serialisasi dan deserialisasi JSON yang umum digunakan

DataContractAttributeMenentukan jenis untuk menentukan atau mengimplementasikan kontrak data yang dapat diserialisasikan oleh serializer seperti DataContractSerializer. Untuk membuat jenis dapat diserialisasi, penulis jenis harus menentukan kontrak data untuk jenisnya.

menghadapi masalah yang sulit,Kelas induk memiliki fitur [DataContract], dan kelas turunan mewarisi kelas induk, dan semua atribut subkelas perlu diserialisasi dan dideserialisasi dengan atribut [DataMember]Karena kelas induk adalah dll yang dienkapsulasi orang lain, fitur [DataContract] dari kelas induk tidak dapat dihapus!

Pengujiannya adalah sebagai berikut: Kelas Test1 memiliki fitur [DataContract], jika atribut tidak menambahkan fitur [DataMember], maka akan menyebabkan serialisasi dan deserialisasi gagal, seperti yang ditunjukkan pada gambar di bawah ini:




Kami menganotasi fitur [DataContract] dari kelas Test1 dan menemukan bahwa fitur tersebut dapat diserialkan dan dideserialisasi secara normal, sebagai berikut:



Apakah ada penggunaan lanjutan Newtonsoft.Json yang dapat mengabaikan fitur ini? Jawabannya adalah ya!

Cukup gunakan properti OptOut Json.Net. Ini akan lebih diutamakan daripada DataContract.

//
        Abstrak:
        Semua anggota publik diserialkan secara default. Anggota dapat dikecualikan menggunakan Newtonsoft.Json.JsonIgnoreAttribute
        atau System.NonSerializedAttribute. Ini adalah pola serialisasi anggota default.
        Memilih keluar = 0,
        //
        Abstrak:
        Hanya anggota yang diberi label Newtonsoft.Json.JsonPropertyAttribute atau System.Runtime.Serialization.DataMemberAttribute
        diserialisasikan. Mode serialisasi anggota ini juga dapat diatur dengan menandai
        dengan System.Runtime.Serialization.DataContractAttribute.
        Keikutsertaan = 1,
        //
        Abstrak:
        Semua bidang publik dan pribadi diserialisasikan. Anggota dapat dikecualikan menggunakan Newtonsoft.Json.JsonIgnoreAttribute
        atau System.NonSerializedAttribute. Pola serialisasi anggota ini juga baik-baik saja
        Atur ini dengan menandai kelas dengan System.SerializableAttribute dan mengatur IgnoreSerializableAttribute
        Atur Newtonsoft.Json.Serialization.DefaultContractResolver ke false.
        Bidang = 2


Kode pengujian:







Mantan:Memantau AppDomains
Depan:. Komponen pemetaan objek OOM tercepat .NET, Tiny Mapper, dalam praktik proyek
Diposting pada 01/06/2018 13.20.10 |
Menentukan apakah string json adalah objek atau array
Newtonsoft.Json.Linq.JToken s = Newtonsoft.Json.Linq.JToken.Parse(str);

beralih (s.Type.ToString())
                {
                    case "Objek":
                        istirahat;
                    kasus "Array":
                        istirahat;
                    Bawaan:
                        istirahat;
                }
Diposting pada 21/08/2020 11.52.32 |
Mendukung tuan tanah adalah ahli dalam meminta paha
Sanggahan:
Semua perangkat lunak, materi pemrograman, atau artikel yang diterbitkan oleh Code Farmer Network hanya untuk tujuan pembelajaran dan penelitian; Konten di atas tidak boleh digunakan untuk tujuan komersial atau ilegal, jika tidak, pengguna akan menanggung semua konsekuensi. Informasi di situs ini berasal dari Internet, dan sengketa hak cipta tidak ada hubungannya dengan situs ini. Anda harus sepenuhnya menghapus konten di atas dari komputer Anda dalam waktu 24 jam setelah pengunduhan. Jika Anda menyukai program ini, harap dukung perangkat lunak asli, pembelian pendaftaran, dan dapatkan layanan asli yang lebih baik. Jika ada pelanggaran, silakan hubungi kami melalui email.

Mail To:help@itsvse.com