Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Saya Boleh Menyahserialisasi Jenis Terbitan dalam JSON.NET Semasa Memelihara Maklumat Jenis?

Bagaimanakah Saya Boleh Menyahserialisasi Jenis Terbitan dalam JSON.NET Semasa Memelihara Maklumat Jenis?

Mary-Kate Olsen
Lepaskan: 2025-01-21 18:46:14
asal
678 orang telah melayarinya

How Can I Deserialize Derived Types in JSON.NET While Preserving Type Information?

Penyahserikatan jenis terbitan Json.net

Apabila memproses data JSON, adalah berfaedah untuk mensiri dan menyahsiri objek yang mengikuti perhubungan kelas terbitan asas. Walau bagaimanapun, Json.net (Newtonsoft) memerlukan konfigurasi khusus untuk mengendalikan jenis terbitan dengan cekap.

Soalan:

Pertimbangkan asas dan kelas terbitan berikut:

<code>public class Base
{
    public string Name;
}
public class Derived : Base
{
    public string Something;
}</code>
Salin selepas log masuk

Jika anda cuba menyahsiri rentetan JSON yang mengandungi objek kelas asas dan terbitan kepada List<Base>, anda hanya akan mendapat objek kelas asas, sekali gus kehilangan maklumat jenis terbitan.

Penyelesaian:

Untuk berjaya menyahsiri jenis terbitan, anda perlu mendayakan pengendalian nama jenis. Ini boleh dicapai dengan mencipta objek JsonSerializerSettings dan menetapkan sifat TypeNameHandling kepada All. Hantar objek tetapan ini kepada operasi bersiri dan penyahseriran:

<code>Base object1 = new Base() { Name = "Object1" };
Derived object2 = new Derived() { Something = "Some other thing" };
List<Base> inheritanceList = new List<Base>() { object1, object2 };

JsonSerializerSettings settings = new JsonSerializerSettings { TypeNameHandling = TypeNameHandling.All };
string Serialized = JsonConvert.SerializeObject(inheritanceList, settings);
List<Base> deserializedList = JsonConvert.DeserializeObject<List<Base>>(Serialized, settings);</code>
Salin selepas log masuk

Dengan mendayakan pengendalian nama jenis, Json.net akan memasukkan maklumat jenis dalam rentetan JSON. Semasa penyahserikatan, ia akan menggunakan maklumat ini untuk mencipta semula objek terbitan dengan betul dan mengisi deserializedList.

Nota: Menggunakan kaedah ini mendedahkan nama semua objek serta senarai itu sendiri dalam data bersiri. Jika ini adalah masalah, pertimbangkan cara alternatif untuk mengendalikan perhubungan polimorfik.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menyahserialisasi Jenis Terbitan dalam JSON.NET Semasa Memelihara Maklumat Jenis?. 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