Siri JSON dan pemeliharaan jenis dalam ServiceStack
Apabila mensirikan objek kepada JSON, adalah penting untuk mengekalkan maklumat jenis untuk menyahsiri dengan betul. Pertimbangkan contoh berikut:
<code>public class Container { public Animal Animal { get; set; } } public class Animal { } public class Dog : Animal { public void Speak() { Console.WriteLine("Woof!"); } }</code>
Di sini, mensiri objek Container yang mengandungi tika Dog menghasilkan InvalidCastException pada penyahserikatan kerana medan Haiwan yang dinyahsiri tidak diiktiraf secara jelas sebagai Anjing. Untuk menyelesaikan masalah ini, ServiceStack menggunakan mekanisme untuk mengekalkan maklumat jenis.
JsonSerializer dalam ServiceStack termasuk atribut __type
dalam muatan JSON untuk menyimpan maklumat jenis. Sifat ini dipancarkan untuk antara muka, kelas abstrak dan jenis objek terikat lewat. Contohnya, jika Haiwan ditakrifkan sebagai antara muka atau kelas abstrak, JSON bersiri akan mengandungi atribut __type
dengan nilai "Animal" atau "Anjing" masing-masing.
Perlu diingat bahawa menggunakan warisan dalam DTO biasanya tidak disyorkan kerana ia memperkenalkan kerumitan yang tidak perlu. Proses siri JSON lalai ServiceStack direka untuk menghasilkan DTO yang menerangkan sendiri tanpa memerlukan maklumat jenis luaran.
Atas ialah kandungan terperinci Bagaimanakah ServiceStack Mengekalkan Maklumat Jenis Semasa Pensirilan dan Penyahserikatan JSON?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!