Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk bersiri objek kanak -kanak polimorfik dalam json.net tanpa medan '$ jenis'?
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!