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
Lepaskan: 2025-02-02 11:51:09
asal
359 orang telah melayarinya

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.
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
{
    // ...
}
Salin selepas log masuk

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.
List<GalleryItem> items = JsonConvert.DeserializeObject<List<GalleryItem>>(json, new GalleryItemConverter());
Salin selepas log masuk

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 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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan