Rumah >pembangunan bahagian belakang >C++ >Mengapa Penyahserialisasian JSON Gagal Apabila Jenis Senarai Menjangkakan Data JSON Bukan Tatasusunan?
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
<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!