Rumah > pembangunan bahagian belakang > C++ > Kenapa JSON Deserialization gagal apabila array dijangka sebagai objek?

Kenapa JSON Deserialization gagal apabila array dijangka sebagai objek?

Susan Sarandon
Lepaskan: 2025-01-27 05:21:11
asal
184 orang telah melayarinya

Why Does JSON Deserialization Fail When an Array is Expected as an Object?

Penyahserialisasi tatasusunan JSON ke dalam objek yang dijangkakan gagal: "Tidak boleh nyahseri tatasusunan menjadi objek"

Percubaan untuk menyahsiri tatasusunan JSON ke dalam objek kelas tertentu boleh mengakibatkan ralat berikut: "Tidak boleh menyahsiri tatasusunan JSON (cth. [1,2,3]) untuk menaip 'MyClass' kerana jenis itu memerlukan Objek JSON (seperti {"name":"value"}) boleh dinyahsiri dengan betul."

Ralat ini menunjukkan bahawa data JSON berada dalam format tatasusunan, manakala kelas sasaran menjangkakan satu format objek. Untuk menyelesaikan isu ini, pertimbangkan perkara berikut:

1. Nyahsiri tatasusunan JSON ke dalam koleksi:

Jika anda ingin menyahsiri tatasusunan JSON ke dalam koleksi objek, anda boleh mengubah suai kod seperti berikut:

<code class="language-csharp">var objResponse1 = JsonConvert.DeserializeObject<List<RetrieveMultipleResponse>>(JsonStr);</code>
Salin selepas log masuk

Dalam kes ini, tatasusunan JSON akan dinyahsiri ke dalam senarai objek RetrieveMultipleResponse.

2. Pastikan JSON diformatkan dengan betul sebagai objek:

Sebagai alternatif, jika anda perlu menyahsiri data JSON menjadi satu objek, anda boleh mengesahkan bahawa JSON diformatkan dengan betul. Rentetan JSON hendaklah disertakan dalam pendakap kerinting ({}) dan harus mengandungi pasangan nilai kunci. Contoh berikut JSON mewakili objek yang sah:

<code class="language-json">{
    "Attributes": [
        ...
    ],
    "Name": "account",
    "Id": "1"
}</code>
Salin selepas log masuk

Selepas memformat JSON menjadi objek, anda boleh menggunakan kod berikut untuk menyahsirikannya:

<code class="language-csharp">var objResponse1 = JsonConvert.DeserializeObject<RetrieveMultipleResponse>(JsonStr);</code>
Salin selepas log masuk

Pilihan lain:

  • Anda juga boleh menambah atribut [JsonArray] pada kelas sasaran untuk memaksa penyahserialisasian daripada tatasusunan JSON.
  • Jika anda mempunyai kawalan ke atas data JSON, anda boleh mengubah suainya ke dalam format objek yang diingini sebelum menyahsirikannya.

Atas ialah kandungan terperinci Kenapa JSON Deserialization gagal apabila array dijangka sebagai objek?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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