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
.JsonSerializerSettings settings = new JsonSerializerSettings { TypeNameHandling = TypeNameHandling.All };
$type
yang diperlukan pada rentetan JSON.string strJson = JsonConvert.SerializeObject(instance, settings);
JSON yang terhasil akan menyerupai ini (perhatikan medan $type
):
{ "$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]" } ] }
IEnumerable<BaseType>
menggunakan objek settings
yang sama.IEnumerable<BaseType> deserialized = JsonConvert.DeserializeObject<IEnumerable<BaseType>>(strJson, settings);
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!