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
Susan Sarandonasal
2025-01-08 06:00:40814semak imbas

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>

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>

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!

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