Menyahsiri Koleksi Kejadian Antara Muka
Apabila cuba untuk mensiri dan menyahsiri koleksi contoh antara muka menggunakan JSON.NET, adalah penting untuk menangani isu pengenalan jenis semasa penyahserialisasian. Mesej ralat yang ditemui dalam senario ini menunjukkan bahawa tidak mungkin untuk membuat antara muka atau kelas abstrak secara langsung.
Pendekatan Pengikat Jenis Tersuai
Satu pendekatan yang dicadangkan melibatkan penggunaan pengikat Penyelesai Jenis tersuai. Ini melibatkan mencipta kelas tersuai yang melaksanakan antara muka ITypeResolver dan memberikannya kepada JsonSerializer semasa penyahserikatan. Pengikat tersuai akan bertanggungjawab untuk menyelesaikan jenis konkrit berdasarkan jenis antara muka.
Tetapan Lalai JSON.NET
Walau bagaimanapun, dengan JSON.NET, adalah mungkin untuk mencapai penyahserialisasian tanpa memerlukan pengikat tersuai. Dengan melaraskan tetapan TypeNameHandling dan TypeNameAssemblyFormat dalam objek JsonSerializerSettings, JSON.NET boleh mengendalikan pengenalpastian jenis secara automatik semasa kedua-dua penyirian dan penyahsirilan.
Pensirian
Apabila mensiri, nyatakan mengikuti tetapan:
string serializedJson = JsonConvert.SerializeObject(objectToSerialize, Formatting.Indented, new JsonSerializerSettings { TypeNameHandling = TypeNameHandling.Objects, TypeNameAssemblyFormat = System.Runtime.Serialization.Formatters.FormatterAssemblyStyle.Simple });
Penyahserikatan
Apabila penyahserikatan, gunakan tetapan berikut:
var deserializedObject = JsonConvert.DeserializeObject<ClassToSerializeViaJson>(serializedJson, new JsonSerializerSettings { TypeNameHandling = TypeNameHandling.Objects });
Dengan tetapan ini, JSON.NET akan secara automatik mengenal pasti jenis konkrit kejadian antara muka berdasarkan maklumat jenis yang diberikan semasa bersiri. Ini membolehkan penyahserikatan lancar koleksi yang mengandungi objek yang melaksanakan antara muka yang berbeza.
Atas ialah kandungan terperinci Bagaimana untuk Menyahseri Koleksi Contoh Antara Muka Menggunakan JSON.NET?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!