Rumah > pembangunan bahagian belakang > C++ > Bagaimana untuk Menyahserialisasikan JSON dengan Sifat Antara Muka dalam JSON.NET?

Bagaimana untuk Menyahserialisasikan JSON dengan Sifat Antara Muka dalam JSON.NET?

Susan Sarandon
Lepaskan: 2025-01-18 16:11:15
asal
1002 orang telah melayarinya

How to Deserialize JSON with Interface Properties in JSON.NET?

Antaramuka Penghantaran untuk Penyahserikatan dalam JSON.NET

Apabila bekerja dengan JSON.NET untuk penyahserikan, isu biasa timbul apabila berurusan dengan kelas yang mengandungi sifat peringkat antara muka. Ralat "Tidak dapat mencipta contoh jenis IThingy. Jenis ialah antara muka atau kelas abstrak dan tidak boleh dijadikan instantiated" menunjukkan bahawa JSON.NET tidak dapat menyahsiri antara muka.

Untuk menyelesaikan masalah ini, gunakan penyelesaian yang dicadangkan oleh @SamualDavis dalam urutan serupa:

  1. Sertakan Kelas Konkrit sebagai Parameter Pembina:

    Apabila mengisytiharkan kelas yang mempunyai sifat antara muka, masukkan kelas konkrit sebagai parameter kepada pembinanya. Dengan cara ini, JSON.NET boleh mengenal pasti kelas khusus yang akan digunakan semasa penyahserikatan.

  2. Contoh Pembina:

    public class Visit : IVisit
    {
        /// <summary>
        /// This constructor is required for the JSON deserializer to be able
        /// to identify concrete classes to use when deserializing the interface properties.
        /// </summary>
        public Visit(MyLocation location, Guest guest)
        {
            Location = location;
            Guest = guest;
        }
        public long VisitId { get; set; }
        public ILocation Location { get;  set; }
        public DateTime VisitDate { get; set; }
        public IGuest Guest { get; set; }
    }
    Salin selepas log masuk

Dengan mengikuti pendekatan ini, JSON.NET akan berjaya menyahsiri objek JSON ke dalam objek C# anda, walaupun jika ia mengandungi sifat peringkat antara muka.

Atas ialah kandungan terperinci Bagaimana untuk Menyahserialisasikan JSON dengan Sifat Antara Muka dalam JSON.NET?. 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