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

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

DDD
Lepaskan: 2025-01-24 13:02:13
asal
702 orang telah melayarinya

How to Serialize Polymorphic Objects in JSON.NET Without the

json.net serialization objek polimorfik (tiada "$ jenis" medan)

Adalah mudah untuk menggunakan typenameHandling.auto di json.net di json.net, tetapi bagaimana jika anda perlu mengeluarkan medan "$ jenis"?

Kaedah 1: Rame "$ type" ke nama tersuai

Kaedah 2: Tambah maklumat subclass ke kelas asas

Daripada menggunakan kelas kontena untuk menyimpan maklumat sub -jenis, menambah atribut yang dipanggil "Jenis" ke kelas asas:

Ini memastikan bahawa apabila objek jenis subtypeclassbase bersiri, ia sentiasa mengandungi maklumat sub -jenis.

<code class="language-csharp">[JsonConverter(typeof(SubTypeClassConverter))]
public class SubTypeClassBase
{
    [JsonConverter(typeof(StringEnumConverter))]
    public SubType Type { get { return typeToSubType[GetType()]; } }
}</code>
Salin selepas log masuk
Permodalan tersuai

Untuk betul -betul bersiri JSON, buat jsonconverter yang disesuaikan (subtypeclassconverter). Melalui kaedah ini, json.net secara automatik akan memasukkan atribut "jenis" apabila objek subtypeclassbase bersiri, dan menggunakan subtypeclassconverter untuk betul mengatur siri JSON mengikut jenis yang ditentukan.

Respons ini mengekalkan imej, menyusun semula teks untuk pembacaan dan aliran yang lebih baik, dan digunakan untuk makna Al. . 3

Atas ialah kandungan terperinci Bagaimana untuk bersiri objek polimorfik dalam json.net tanpa medan '$ 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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan