Rumah > pembangunan bahagian belakang > C++ > Bagaimana untuk Deserialize JSON menjadi `IEnumerable` menggunakan Newtonsoft JSON.NET?

Bagaimana untuk Deserialize JSON menjadi `IEnumerable` menggunakan Newtonsoft JSON.NET?

Linda Hamilton
Lepaskan: 2025-01-17 13:48:11
asal
919 orang telah melayarinya

How to Deserialize JSON into an `IEnumerable` using Newtonsoft JSON.NET?

Gunakan Newtonsoft JSON.NET untuk menyahsiri JSON kepada IEnumerable

Anggap bahawa JSON mewakili senarai objek dengan jenis polimorfik:

<code>[
  {
    "$id": "1",
    "$type": "MyAssembly.ClassA, MyAssembly",
    "Email": "[email protected]"
  },
  {
    "$id": "2",
    "$type": "MyAssembly.ClassB, MyAssembly",
    "Email": "[email protected]"
  }
]</code>
Salin selepas log masuk

dan kelas asas abstrak dan terbitan:

<code>public abstract class BaseClass
{
    public string Email;
}
public class ClassA : BaseClass
{
}
public class ClassB : BaseClass
{
}</code>
Salin selepas log masuk

Deserialisasi JSON kepada IEnumerable

Untuk menyahsiri JSON kepada IEnumerable, ikut langkah berikut:

  1. Dayakan TypeNameHandling: Tetapkan TypeNameHandling JsonSerializerSettings kepada Semua untuk memasukkan maklumat jenis dalam JSON yang dinyahsiri.

    <code> JsonSerializerSettings settings = new JsonSerializerSettings
     {
         TypeNameHandling = TypeNameHandling.All
     };</code>
    Salin selepas log masuk
  2. JSON bersiri: Mensiri senarai objek menggunakan tetapan yang dikonfigurasikan.

    <code> string strJson = JsonConvert.SerializeObject(instance, settings);</code>
    Salin selepas log masuk
  3. JSON yang diubah suai: JSON bersiri akan mengandungi maklumat $type dan JSON yang dihasilkan akan kelihatan seperti ini:

    <code> {
       "$type": "System.Collections.Generic.List`1[[MyAssembly.BaseClass, MyAssembly]], mscorlib",
       "$values": [
         {
           "$id": "1",
           "$type": "MyAssembly.ClassA, MyAssembly",
           "Email": "[email protected]"
         },
         {
           "$id": "2",
           "$type": "MyAssembly.ClassB, MyAssembly",
           "Email": "[email protected]"
         }
       ]
     }</code>
    Salin selepas log masuk
  4. Nyahsiri JSON: Nyahserialisasikan JSON yang diubah suai kepada kelas asas menggunakan tetapan dengan TypeNameHandling didayakan.

    <code> IEnumerable<BaseClass> obj = JsonConvert.DeserializeObject<IEnumerable<BaseClass>>(strJson, settings);</code>
    Salin selepas log masuk

Dengan mengikuti langkah-langkah ini, anda boleh berjaya menyahsiri JSON kepada IEnumerable, termasuk objek dengan jenis polimorfik.

Atas ialah kandungan terperinci Bagaimana untuk Deserialize JSON menjadi `IEnumerable` menggunakan Newtonsoft JSON.NET?. 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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan