Penyahkodan JSON Gagal dengan Respons Null daripada Perkhidmatan Web
Isu pelik berlaku apabila menggunakan json_encode dan json_decode untuk mengendalikan data JSON dalam aplikasi perkhidmatan web . Perkhidmatan web mengembalikan JSON dalam format berikut:
var_dump($foo): string(62) "{"action":"set","user":"123123123123","status":"OK"}"
Apabila cuba menyahkod JSON dalam aplikasi klien menggunakan kod berikut:
$data = json_decode($foo, true)
hasilnya adalah batal secara mengejutkan:
var_dump($data): NULL
Satu punca yang berpotensi di sebalik isu ini terletak pada konfigurasi petikan ajaib PHP pada pelayan. Dalam versi PHP sebelum 5.4, petikan ajaib secara automatik melepaskan aksara tertentu dalam penyerahan borang, termasuk input JSON. Untuk menyelesaikan isu ini, lumpuhkan petikan ajaib menggunakan kod berikut:
if(get_magic_quotes_gpc()){ $param = stripslashes($_POST['param']); }else{ $param = $_POST['param']; } $param = json_decode($param,true);
Ini sepatutnya menyelesaikan isu dan membenarkan json_decode mengembalikan objek JSON yang dijangkakan seperti yang diharapkan.
Atas ialah kandungan terperinci Mengapakah JSON Decode saya Mengembalikan NULL Walaupun Respons JSON yang Nampak Sah daripada Perkhidmatan Web saya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!