Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk bersiri objek kanak -kanak polimorfik dalam json.net tanpa medan '$ jenis'?

Bagaimana untuk bersiri objek kanak -kanak polimorfik dalam json.net tanpa medan '$ jenis'?

Barbara Streisand
Barbara Streisandasal
2025-01-24 12:57:14688semak imbas

How to Serialize Polymorphic Child Objects in Json.Net without the

json.net polymorphic sub -object serialization, no "type $ type" medan

Dalam senario bersiri menggunakan JSON.NET untuk Serialization Objek, permintaan yang sama adalah untuk menunjukkan objek polimer dalam kelas induk. Walaupun tetapan typenameHandling.Auto JSON.NET memudahkan tugas ini, ia akan memperkenalkan medan "Jenis $" untuk menunjukkan jenis sub -object. Atas pelbagai sebab, ini mungkin tidak wajar.

cabaran

Cabaran adalah bagaimana untuk mengenal pasti jenis sub -object tanpa bergantung pada medan "$ jenis". Satu kaedah adalah untuk menyimpan maklumat jenis sebagai penunjuk dalam kelas induk, seperti yang ditunjukkan dalam kod contoh yang disediakan. Walau bagaimanapun, ini akan membawa sekatan yang berkaitan dengan kebolehcapaian dan pengurusan data.

penyelesaian

Untuk menyelesaikan sekatan ini, penyelesaian yang lebih berkesan adalah untuk menambah maklumat sub -jenis secara langsung sebagai atribut ke kelas asas. Ini membolehkan penghitungan sub -jenis bersiri apabila bersiri untuk ditugaskan ke kelas asas. Semasa tempoh yang mendalam, anda boleh menggunakan jsonconverter tersuai untuk memuatkan data JSON ke dalam objek sementara, menentukan subkelas yang sesuai berdasarkan atribut "jenis", dan lakukan kaunter -penyerapan dengan sewajarnya. Melaksanakan butiran

realisasi penciptaan penghitungan subtipe tersuai dan kamus yang memetakan jenis ke sub -jenis. Kelas asas subtypeclassbase mengandungi atribut jenis, yang menggunakan kamus untuk kembali ke sub -jenis.

Kelas subtypeclasssconverter bertindak sebagai jsonconverter yang bertanggungjawab untuk derivatif. Ia memeriksa harta "jenis" dalam objek JSON, memperoleh sub -jenis yang sepadan, dan mengisi subkelas yang sepadan dengan contoh sedia ada atau baru.

Dengan mengadopsi kaedah ini, anda boleh menggunakan Serialization JSON.NET dan sub -oblects polimorfik derivatif tanpa memperkenalkan medan "Jenis $" untuk memastikan fleksibiliti dan kawalan perwakilan data.

Atas ialah kandungan terperinci Bagaimana untuk bersiri objek kanak -kanak polimorfik dalam json.net tanpa medan '$ jenis'?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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