Rumah >pembangunan bahagian belakang >C++ >Mengapa Penyahserialisasian JSON Gagal Apabila Jenis Senarai Menjangkakan Data JSON Bukan Tatasusunan?

Mengapa Penyahserialisasian JSON Gagal Apabila Jenis Senarai Menjangkakan Data JSON Bukan Tatasusunan?

Linda Hamilton
Linda Hamiltonasal
2025-01-08 06:17:42927semak imbas

Why Does JSON Deserialization Fail When a List Type Expects Non-Array JSON Data?

Mengendalikan ralat penyahserikatan JSON: jenis senarai dan data JSON bukan tatasusunan

Apabila menyahsiri data JSON menggunakan JsonConvert Newtonsoft, pembangun sering menghadapi ralat: "Objek JSON semasa tidak boleh dinyahsiri untuk menaip 'System.Collections.Generic.List`1[T]' kerana tatasusunan JSON jenis A diperlukan untuk deserialisasi dengan betul ”

Ralat ini berlaku apabila jenis data sasaran ialah senarai (ditunjukkan sebagai 'Senarai`1' dalam mesej ralat), tetapi data JSON bukan tatasusunan. Untuk menyelesaikan isu ini, anda perlu mengubah suai data JSON agar sepadan dengan format tatasusunan yang dijangkakan atau laraskan jenis data sasaran untuk menerima format bukan tatasusunan.

Penukaran data JSON

Jika data JSON anda sebenarnya adalah tatasusunan tetapi tidak diwakili dalam borang ini, anda perlu menukarnya kepada format tatasusunan sebelum dinyahsiri. Anda boleh menggunakan kelas JObject atau JArray JSON.NET untuk tujuan ini. Contohnya, jika data JSON anda dalam format berikut:

<code>{"data":[{"target_id":9503123,"target_type":"user"}]}</code>

Anda boleh menggunakan kod berikut untuk menukarnya kepada format tatasusunan:

<code>JObject obj = JObject.Parse(jsonstring);
jsonstring = obj["data"].ToString();</code>

Ini akan menukar data JSON ke dalam format tatasusunan berikut:

<code>[{"target_id":9503123,"target_type":"user"}]</code>

Laraskan jenis data sasaran

Jika data JSON anda bukan tatasusunan, anda perlu melaraskan jenis data sasaran untuk menerima format bukan tatasusunan. Dalam kes ini, anda harus menukar jenis List kepada jenis RootObject. Contohnya:

<code>RootObject datalist = JsonConvert.DeserializeObject<RootObject>(jsonstring);</code>

Atas ialah kandungan terperinci Mengapa Penyahserialisasian JSON Gagal Apabila Jenis Senarai Menjangkakan Data JSON Bukan Tatasusunan?. 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