Rumah >pembangunan bahagian belakang >C++ >Bagaimana Saya Boleh Memelihara Kunci Kamus Semasa Mensiri dengan Json.Net?

Bagaimana Saya Boleh Memelihara Kunci Kamus Semasa Mensiri dengan Json.Net?

Linda Hamilton
Linda Hamiltonasal
2025-01-17 11:06:14833semak imbas

How Can I Preserve Dictionary Keys When Serializing with Json.Net?

Cara mengekalkan kunci kamus dalam siri Json.Net

Json.Net ialah perpustakaan bersiri yang biasa digunakan, tetapi apabila mensiri objek yang mengandungi kamus, anda mungkin menghadapi masalah tentang cara mengekalkan kunci kamus.

Mari kita lihat contoh:

<code class="language-c#">public class Test
{
    public string X { get; set; }
    public Dictionary<string, string> Y { get; set; }
}</code>

Andaikata anda ingin mensirikan objek ini ke dalam format JSON berikut:

<code class="language-json">{
    "X" : "value",
    "key1": "value1",
    "key2": "value2"
}</code>

Di sini, kekunci kamus ("key1" dan "key2") hendaklah disertakan secara eksplisit dalam output JSON.

Gunakan atribut JsonExtensionData untuk mengekalkan kamus

Jika menggunakan Json.Net 5.0.5 atau lebih tinggi, terdapat penyelesaian mudah. Kamus boleh dipromosikan sebagai sebahagian daripada perwakilan bersiri objek induk dengan menggunakan atribut [JsonExtensionData]. Hanya gunakan atribut pada atribut kamus:

<code class="language-c#">public class Test
{
    public string X { get; set; }

    [JsonExtensionData]
    public Dictionary<string, object> Y { get; set; }
}</code>

Dengan pelarasan ini, pasangan nilai kunci kamus akan disepadukan dengan lancar ke dalam perwakilan JSON objek induk. Selain itu, mekanisme ini berfungsi dalam kedua-dua arah, membenarkan sifat JSON lain yang tidak memetakan terus kepada ahli kelas untuk dinyahsiri ke dalam kamus.

Atas ialah kandungan terperinci Bagaimana Saya Boleh Memelihara Kunci Kamus Semasa Mensiri dengan Json.Net?. 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