Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah saya Boleh Mensiri Medan Peribadi dan Subkelas dalam JSON.Net?

Bagaimanakah saya Boleh Mensiri Medan Peribadi dan Subkelas dalam JSON.Net?

Barbara Streisand
Lepaskan: 2025-01-07 20:25:39
asal
316 orang telah melayarinya

How Can I Serialize Private and Subclass Fields in JSON.Net?

JSON.Net: Mensiri Medan Peribadi dan Diwarisi

Panduan ini menunjukkan cara mensiri objek kompleks menggunakan JSON.Net, termasuk medan peribadi dan yang diwarisi daripada subkelas. Serialisasi menukarkan objek kepada format yang boleh disimpan atau boleh dihantar. Untuk objek dengan ahli persendirian atau warisan kompleks, JSON.Net memerlukan pengendalian tersuai.

Cabaran:

Anda mempunyai hierarki kelas dengan medan kebolehaksesan yang berbeza-beza (awam, peribadi, dilindungi, dsb.). Anda perlu mensiri semua medan, malah medan peribadi dan dalam subkelas, contohnya, untuk sandaran data.

Penyelesaian:

Penyelesaikan kontrak tersuai membenarkan mengatasi tingkah laku bersiri lalai JSON.Net. Penyelesai ini akan memaksa kemasukan semua medan, tanpa mengira pengubah aksesnya.

Pelaksanaan JSON.Net:

<code class="language-csharp">var settings = new JsonSerializerSettings { ContractResolver = new MyContractResolver() };
var json = JsonConvert.SerializeObject(myObject, settings);</code>
Salin selepas log masuk

Penyelesaikan Kontrak Tersuai (MyContractResolver):

<code class="language-csharp">public class MyContractResolver : Newtonsoft.Json.Serialization.DefaultContractResolver
{
    protected override IList<JsonProperty> CreateProperties(Type type, MemberSerialization memberSerialization)
    {
        var props = type.GetProperties(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance)
                        .Select(p => base.CreateProperty(p, memberSerialization))
                        .Union(type.GetFields(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance)
                                   .Select(f => base.CreateProperty(f, memberSerialization)))
                        .ToList();
        props.ForEach(p => { p.Writable = true; p.Readable = true; });
        return props;
    }
}</code>
Salin selepas log masuk

Penyelesai ini memeriksa semua medan dan sifat contoh (awam dan persendirian) bagi jenis yang diberikan dan kelas asasnya. Ia kemudian menandakan setiap sifat sebagai boleh dibaca dan boleh ditulis, memastikan penyirian lengkap. Ambil perhatian bahawa menggunakan pendekatan ini untuk mensiri medan peribadi harus dilakukan dengan berhati-hati, terutamanya untuk data sensitif keselamatan.

Atas ialah kandungan terperinci Bagaimanakah saya Boleh Mensiri Medan Peribadi dan Subkelas dalam JSON.Net?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan