Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk menghilangkan data JSON ke dalam kelas C# tanpa pembina lalai?

Bagaimana untuk menghilangkan data JSON ke dalam kelas C# tanpa pembina lalai?

Linda Hamilton
Linda Hamiltonasal
2025-01-29 16:32:10880semak imbas

How to Deserialize JSON Data into a C# Class Without a Default Constructor?

json.net: Tidak perlu lalai untuk membina fungsi fungsi fungsi

Pembina lalai JSON.NET boleh mengurutan dengan lancar data JSON ke dalam objek. Walau bagaimanapun, jika kelas anda perlu dikembalikan semula, pembina lalai mungkin menghalang proses pemprosesan. Masalah ini berlaku apabila data JSON selaras dengan parameter pembina beban berat tetapi terdapat pembina lalai.

Penyelesaian: Tutup tingkah laku lalai

Untuk mengelakkan json.net daripada menggunakan pembina lalai, terdapat dua cara:

<.> 1. Gunakan [JSONCONSTRUCTOR] CIRI -CIRI:

json.net membolehkan anda menentukan pembina yang boleh diubah suai dengan ciri [JSONCONSTRUCTOR]. Dengan menggunakan pembina yang diperlukan untuk ciri ini, anda boleh memaksa json.net untuk menggunakannya, walaupun pembina lalai ditakrifkan. Perlu diingat bahawa parameter pembina harus selaras dengan atribut objek JSON (abaikan huruf kecil). <.> 2. Buat JsonConverter tersuai:

atau, jika anda tidak dapat mengubah suai kelas, anda boleh membuat JsonConverrer tersuai untuk mengawal proses pemprosesan. Kaedah penukar ReadJSON boleh disesuaikan untuk menggunakan objek pembina bukan -default dan mengisi sebarang atribut lain mengikut data JSON.

Contoh:

Memandangkan kelas berikut dengan fungsi konstruktif:

Untuk menggunakan kaedah ciri [jsonconstructor], sila gunakan pembina pilihan hiasan ciri ini, seperti yang ditunjukkan di bawah:

Sebaliknya, untuk kaedah JsonConverrer adat, anda boleh menentukan penukar yang ditunjukkan di bawah:

<code class="language-csharp">public class Result
{
    public Result() { }

    [JsonConstructor]
    public Result(int? code, string format, Dictionary<string, string> details = null)
    {
        Code = code ?? ERROR_CODE;
        Format = format;

        if (details == null)
            Details = new Dictionary<string, string>();
        else
            Details = details;
    }
}</code>

Dalam kaedah ReadJSON penukar ini, anda boleh menggunakan pembina bukan -default untuk memberi insteriate objek hasil dan mengisi atribut lain mengikut data JSON.

<code class="language-csharp">[JsonConstructor]
public Result(int? code, string format, Dictionary<string, string> details = null)
{
    ...
}</code>
Dengan menggunakan teknologi ini, anda boleh menutup tingkah laku lalai JSON.NET dan membolehkan derivatif penggunaan pembina beban berat, walaupun terdapat fungsi pembina lalai.

Atas ialah kandungan terperinci Bagaimana untuk menghilangkan data JSON ke dalam kelas C# tanpa pembina lalai?. 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