Sirikan dan nyahsiri jenis terbitan menggunakan Json.net
Json.net (Newtonsoft) memerlukan pengendalian khas untuk mensiri dan menyahsiri jenis terbitan dengan betul apabila menggunakan warisan polimorfik dalam C#. Artikel ini meneroka cara untuk melakukan ini dengan mendayakan pengendalian nama jenis.
Soalan
Pertimbangkan hierarki kelas berikut:
<code class="language-csharp">public class Base { public string Name; } public class Derived : Base { public string Something; }</code>
Sekarang, jika anda cuba menyahsiri rentetan JSON yang mengandungi senarai objek Asas, tetapi ia sebenarnya mengandungi objek Terbitan, anda tidak akan dapat memulihkan maklumat jenis terbitan. Bagaimana untuk menyelesaikan masalah ini?
Jawapan
Json.net menyediakan pilihan TypeNameHandling, yang membolehkan pensirilan dan penyahserikatan nama jenis. Untuk menggunakan ciri ini:
Berikut ialah contoh:
<code class="language-csharp">// 序列化 Base object1 = new Base() { Name = "Object1" }; Derived object2 = new Derived() { Something = "Some other thing" }; List<Base> inheritanceList = new List<Base>() { object1, object2 }; JsonSerializerSettings settings = new JsonSerializerSettings { TypeNameHandling = TypeNameHandling.All }; string Serialized = JsonConvert.SerializeObject(inheritanceList, settings); // 反序列化 List<Base> deserializedList = JsonConvert.DeserializeObject<List<Base>>(Serialized, settings);</code>
Pendekatan ini memastikan Json.net mengekalkan maklumat jenis semasa penyirian dan memulihkannya semasa penyahsirilan, membenarkan jenis terbitan dipulihkan dengan betul.
Atas ialah kandungan terperinci Bagaimana untuk Mensiri dan Menyahseri Jenis Terbitan dalam C# dengan Json.net?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!