Rumah >pembangunan bahagian belakang >C++ >Bagaimana cara deserialize Polymorphic JSON di json.net tanpa maklumat jenis?

Bagaimana cara deserialize Polymorphic JSON di json.net tanpa maklumat jenis?

Mary-Kate Olsen
Mary-Kate Olsenasal
2025-02-02 11:51:09314semak imbas

How to Deserialize Polymorphic JSON in Json.NET without Type Information?

Tiada jenis maklumat, menggunakan kelas JSON.NET Back -sequenticed Polymorphic JSON CLASS

Apabila data JSON mengandungi pelbagai jenis objek dan tidak mempunyai maklumat jenis yang eksplisit, penyebaran belakang JSON.NET akan menghadapi cabaran. Untuk mengatasi halangan ini, jsonconverter tersuai boleh dibangunkan, yang dengan serta -merta meneliti kelas yang sepadan mengikut atribut tertentu.

mari kita pertimbangkan contoh, di mana panggilan Imgur API mengembalikan senarai, yang mengandungi kelas GalleryImage dan Galleryalbum yang dinyatakan dalam JSON. Oleh kerana kekurangan atribut jenis $, ia tidak boleh digunakan untuk menggunakan json.net untuk automasi. Walau bagaimanapun, dengan menggunakan harta IS_Album, kita boleh membezakan kedua -dua kategori ini.

Untuk merealisasikan jsonconverter adat, kami menentukan kelas kami dan membuat GalleryItemConverter, seperti yang ditunjukkan di bawah:

Dalam kaedah readjson penukar, kami menyemak harta IS_Album untuk menentukan jenis objek yang akan dimaklumkan. Kemudian gunakan serializer untuk mengisi data JSON ke dalam objek.
<code class="language-csharp">public abstract class GalleryItem
{
    public string id { get; set; }
    public string title { get; set; }
    public string link { get; set; }
    public bool is_album { get; set; }
}

public class GalleryImage : GalleryItem
{
    // ...
}

public class GalleryAlbum : GalleryItem
{
    public int images_count { get; set; }
    public List<GalleryImage> images { get; set; }
}

public class GalleryItemConverter : JsonConverter
{
    // ...
}</code>

Ini adalah contoh program yang menunjukkan penggunaan penukar ini:

output memaparkan objek deepertization dan atribut masing -masing, termasuk imej objek Galleryalbum. GalleryItemConverter tersuai menyediakan penyelesaian yang boleh disiarkan tanpa maklumat jenis yang jelas untuk mengendalikan pelbagai struktur data.
<code class="language-csharp">List<GalleryItem> items = JsonConvert.DeserializeObject<List<GalleryItem>>(json, new GalleryItemConverter());</code>

Atas ialah kandungan terperinci Bagaimana cara deserialize Polymorphic JSON di json.net tanpa maklumat 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