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
Susan Sarandonasal
2025-01-27 05:21:11193semak imbas

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>

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>

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

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

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