Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk membuat jsonconverter tersuai di json.net untuk mengendalikan siri polimorfik tanpa typenameHandling?

Bagaimana untuk membuat jsonconverter tersuai di json.net untuk mengendalikan siri polimorfik tanpa typenameHandling?

Susan Sarandon
Susan Sarandonasal
2025-02-02 08:51:11437semak imbas

How to Create a Custom JsonConverter in JSON.NET to Handle Polymorphic Serialization without TypeNameHandling?

Melaksanakan JSONConConverRter yang disesuaikan

di json.net

Custom JsonConverter digunakan untuk melanjutkan fungsi Serialization dan Depetisi JSON.NET. Dalam sesetengah kes, penukar tersuai perlu dibuat untuk memproses jenis data kompleks atau disesuaikan.

mari kita pertimbangkan contoh, di mana anda mempunyai orang kelas asas dan dua pekerja dan artis yang diperolehi. Anda mempunyai senarai objek orang yang perlu bersiri sebagai JSON. Walau bagaimanapun, anda ingin mengelakkan menggunakan typenameHandling. Di sinilah JsonConverter adat boleh memainkan peranan.

Atas sebab ini, kita perlu menentukan personconverter penukar adat, yang memperluaskan JsonCreationverter

. Dalam kaedah membuat penukar, kita boleh menganalisis objek JSON untuk menentukan jenis derivatif yang betul mengikut kewujudan bidang tertentu.

<code class="language-c#">public class PersonConverter : JsonCreationConverter<Person>
{
    protected override Person Create(Type objectType, JObject jObject)
    {
        if (FieldExists("Skill", jObject))
        {
            return new Artist();
        }
        else if (FieldExists("Department", jObject))
        {
            return new Employee();
        }
        else
        {
            return new Person();
        }
    }

    private bool FieldExists(string fieldName, JObject jObject)
    {
        return jObject[fieldName] != null;
    }
}</code>
Sekarang, apabila aliran balik JSON bersiri kembali ke senarai

objek, anda boleh menggunakan penukar tersuai:

<code class="language-c#">string json = "[...]";
List<Person> persons = JsonConvert.DeserializeObject<List<Person>>(json, new PersonConverter());</code>
Ingatlah bahawa apabila menggunakan penukar tersuai semasa pengukuhan, contoh Personconverter perlu diserahkan kepada JSONCONVERT.DESERIALIZEObject. Kaedah ini membolehkan anda memproses jenis data yang kompleks atau disesuaikan dengan menyediakan logik penukaran khas dalam jsonconverrer tersuai.

Atas ialah kandungan terperinci Bagaimana untuk membuat jsonconverter tersuai di json.net untuk mengendalikan siri polimorfik tanpa typenameHandling?. 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