Rumah > pembangunan bahagian belakang > C++ > Bagaimana untuk Mensiri dan Menyahseri Jenis Terbitan dalam C# dengan Json.net?

Bagaimana untuk Mensiri dan Menyahseri Jenis Terbitan dalam C# dengan Json.net?

Mary-Kate Olsen
Lepaskan: 2025-01-21 18:41:08
asal
709 orang telah melayarinya

How to Serialize and Deserialize Derived Types in C# with Json.net?

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>
Salin selepas log masuk

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:

  1. Buat objek JsonSerializerSettings dan tetapkan TypeNameHandling kepada TypeNameHandling.All.
  2. Lepaskan objek tetapan ini sebagai parameter kepada kaedah SerializeObject dan DeserializeObject.

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>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan