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