Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Mensiri Kamus sebagai Sifat Objek Induk dalam JSON.NET?

Bagaimanakah Saya Boleh Mensiri Kamus sebagai Sifat Objek Induk dalam JSON.NET?

DDD
DDDasal
2025-01-17 11:12:08230semak imbas

How Can I Serialize Dictionaries as Parent Object Properties in JSON.NET?

JSON.NET: Mensiri kamus menjadi sifat objek induk

Apabila bersiri dengan JSON.NET, soalan biasa ialah cara mensiri objek dengan sifat kamus. Secara lalai, JSON.NET tidak mensiri kamus sebagai sebahagian daripada objek induk, sebaliknya memilih untuk mengabaikannya. Untuk menyelesaikan masalah ini, kami akan meneroka penyelesaian yang membenarkan kemasukan sifat kamus dalam perwakilan JSON bagi objek induk.

Pertimbangkan kelas yang mengandungi sifat rentetan dan sifat kamus:

<code>public class Test
{
    public string X { get; set; }

    public Dictionary<string, string> Y { get; set; }
}</code>

Format output JSON yang kami jangkakan adalah seperti berikut, dengan atribut kamus ("key1" dan "key2") bersarang terus dalam objek induk:

<code>{
    "X": "value",
    "key1": "value1",
    "key2": "value2"
}</code>

Untuk mencapai hasil ini, kita boleh menggunakan JSON.NET 5.0.5 atau lebih tinggi dan mengubah suai atribut kamus seperti berikut:

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

Dengan menggunakan atribut [JsonExtensionData] pada sifat kamus, kami mengarahkan JSON.NET untuk menyerikan kunci dan nilai kamus sebagai sebahagian daripada objek induk. Selain itu, mekanisme ini menyokong penyahserikatan, memastikan bahawa sebarang sifat JSON yang tidak sepadan dengan ahli kelas disimpan dalam kamus data lanjutan.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mensiri Kamus sebagai Sifat Objek Induk dalam 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