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?

Patricia Arquette
Patricia Arquetteasal
2025-01-17 13:41:10556semak imbas

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

Menggunakan Newtonsoft.Json.NET untuk Menyahseri JSON menjadi Koleksi IEnumerable

Cabaran:

Menyahsiri data JSON kompleks menjadi IEnumerable<BaseType> dengan BaseType abstrak menimbulkan kesukaran. Standard JsonConvert.DeserializeObject() gagal kerana jenis asas abstrak.

Penyelesaian:

Penyelesaian melibatkan memanfaatkan JsonSerializerSettings dan harta TypeNameHandlingnya. Menetapkan TypeNameHandling kepada All memastikan JSON bersiri termasuk medan $type, mengekalkan maklumat jenis yang penting untuk penyahserikatan.

Langkah Pelaksanaan:

  1. Konfigurasi Pensiri: Cipta objek JsonSerializerSettings dan tetapkan TypeNameHandling kepada All.
<code class="language-csharp">JsonSerializerSettings settings = new JsonSerializerSettings
{
    TypeNameHandling = TypeNameHandling.All
};</code>
  1. Sirikan dengan Maklumat Jenis: Sirikan objek anda menggunakan tetapan yang dikonfigurasikan. Ini menambahkan medan $type yang diperlukan pada rentetan JSON.
<code class="language-csharp">string strJson = JsonConvert.SerializeObject(instance, settings);</code>

JSON yang terhasil akan menyerupai ini (perhatikan medan $type):

<code class="language-json">{
  "$type": "System.Collections.Generic.List`1[[MyAssembly.BaseClass, MyAssembly]], mscorlib",
  "$values": [
    {
      "$id": "1",
      "$type": "MyAssembly.ClassA, MyAssembly",
      "Email": "[email'\u00a0protected]"
    },
    {
      "$id": "2",
      "$type": "MyAssembly.ClassB, MyAssembly",
      "Email": "[email'\u00a0protected]"
    }
  ]
}</code>
  1. Nyahsiri dengan Maklumat Jenis: Nyahsiri rentetan JSON kembali menjadi IEnumerable<BaseType> menggunakan objek settings yang sama.
<code class="language-csharp">IEnumerable<BaseType> deserialized = JsonConvert.DeserializeObject<IEnumerable<BaseType>>(strJson, settings);</code>

Dokumentasi Berkaitan:

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!

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