Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Json.net Boleh Mengendalikan Jenis Terbitan Serial dan Deserialisasi?

Bagaimanakah Json.net Boleh Mengendalikan Jenis Terbitan Serial dan Deserialisasi?

Barbara Streisand
Barbara Streisandasal
2025-01-21 18:28:10947semak imbas

How Can Json.net Handle Serializing and Deserializing Derived Types?

Siri dan penyahserikatan jenis terbitan dalam Json.NET (Newtonsoft)

Json.NET menyediakan fleksibiliti dalam mensiri dan menyahsiri struktur data yang kompleks. Apabila berurusan dengan jenis terbitan, adalah penting untuk mengekalkan maklumat jenis semasa bersiri supaya ia dinyahsiri dengan betul.

Json.NET melaksanakan fungsi ini melalui atribut JsonSerializerSettings objek TypeNameHandling. Dengan menetapkan sifat ini kepada All, Json.NET akan memasukkan nama jenis dalam output bersiri.

Sebagai contoh, pertimbangkan asas dan kelas terbitan berikut:

<code class="language-csharp">public class Base
{
    public string Name;
}

public class Derived : Base
{
    public string Something;
}</code>

Untuk mensiri dan menyahsiri jenis terbitan:

<code class="language-csharp">// 序列化
var object1 = new Base() { Name = "Object1" };
var object2 = new Derived() { Something = "Some other thing" };
var inheritanceList = new List<Base>() { object1, object2 };

JsonSerializerSettings settings = new JsonSerializerSettings { TypeNameHandling = TypeNameHandling.All };
string serialized = JsonConvert.SerializeObject(inheritanceList, settings);

// 反序列化
var deserializedList = JsonConvert.DeserializeObject<List<Base>>(serialized, settings);</code>

Dengan pendekatan ini, Json.NET mengekalkan maklumat jenis, membolehkan jenis terbitan berjaya dinyahsiri. Walau bagaimanapun, adalah penting untuk ambil perhatian bahawa output bersiri akan mengandungi jenis yang dikaitkan dengan objek dan sebarang senarai yang digunakan untuk menyimpannya.

Atas ialah kandungan terperinci Bagaimanakah Json.net Boleh Mengendalikan Jenis Terbitan Serial dan Deserialisasi?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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