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 TypeNameHandling
nya. Menetapkan TypeNameHandling
kepada All
memastikan JSON bersiri termasuk medan $type
, mengekalkan maklumat jenis yang penting untuk penyahserikatan.
Langkah Pelaksanaan:
JsonSerializerSettings
dan tetapkan TypeNameHandling
kepada All
.<code class="language-csharp">JsonSerializerSettings settings = new JsonSerializerSettings { TypeNameHandling = TypeNameHandling.All };</code>
$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>
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!