Rumah > pembangunan bahagian belakang > C++ > Mengapa Penyahserialisasian JSON Gagal Apabila Cuba Menukar Objek kepada Senarai?

Mengapa Penyahserialisasian JSON Gagal Apabila Cuba Menukar Objek kepada Senarai?

Susan Sarandon
Lepaskan: 2025-01-08 06:00:40
asal
771 orang telah melayarinya

Why Does JSON Deserialization Fail When Trying to Convert an Object to a List?

Isu penyahserikatan JSON: Tidak dapat menukar objek kepada senarai

Apabila cuba menyahsiri objek JSON ke dalam senarai objek tersuai, pembangun mungkin menghadapi ralat: "Tidak boleh menyahsiri objek JSON semasa (contohnya: {"name":"value"}) ke dalam Type 'System.Collections .Generik.Senarai`1[...]'". Masalah ini berlaku apabila struktur JSON tidak sepadan dengan jenis penyahserialisasian sasaran.

Pertimbangkan coretan kod berikut:

<code class="language-csharp">string jsonstring = "{\"data\":[{\"target_id\":9503123,\"target_type\":\"user\"}]}";
List<RootObject> datalist = JsonConvert.DeserializeObject<List<RootObject>>(jsonstring);</code>
Salin selepas log masuk

Dalam senario ini, jenis penyahserikatan sasaran ialah Senarai, yang menjangkakan tatasusunan JSON objek RootObject. Walau bagaimanapun, rentetan JSON mewakili objek RootObject tunggal, terkandung dalam tatasusunan bernama "data".

Penyelesaian:

Untuk menyelesaikan isu ini, jenis penyahserikatan sasaran mesti dilaraskan agar sejajar dengan struktur JSON.

Deserialisasi yang betul:

<code class="language-csharp">RootObject data = JsonConvert.DeserializeObject<RootObject>(jsonstring);</code>
Salin selepas log masuk

Dengan menukar jenis penyahserialisasian kepada RootObject, kod tersebut kini diselaraskan dengan struktur JSON dan proses penyahserikatan selesai dengan jayanya tanpa ralat di atas. Jika anda perlu mengakses target_id dan target_type, anda perlu memproses lagi objek data, contohnya: data.data[0].target_id.

Atas ialah kandungan terperinci Mengapa Penyahserialisasian JSON Gagal Apabila Cuba Menukar Objek kepada Senarai?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
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