Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Deserialize JSON menjadi `IEnumerable` menggunakan Newtonsoft JSON.NET?
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>
dan kelas asas abstrak dan terbitan:
<code>public abstract class BaseClass { public string Email; } public class ClassA : BaseClass { } public class ClassB : BaseClass { }</code>
Untuk menyahsiri JSON kepada IEnumerable
Dayakan TypeNameHandling: Tetapkan TypeNameHandling JsonSerializerSettings kepada Semua untuk memasukkan maklumat jenis dalam JSON yang dinyahsiri.
<code> JsonSerializerSettings settings = new JsonSerializerSettings { TypeNameHandling = TypeNameHandling.All };</code>
JSON bersiri: Mensiri senarai objek menggunakan tetapan yang dikonfigurasikan.
<code> string strJson = JsonConvert.SerializeObject(instance, settings);</code>
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>
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>
Dengan mengikuti langkah-langkah ini, anda boleh berjaya menyahsiri JSON kepada IEnumerable
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!