Isu Penyahkodan JSON Selepas Panggilan Perkhidmatan Web
Dalam situasi ini berkenaan penghuraian JSON, OP mengalami isu pelik di mana json_decode secara tidak jelas mengembalikan NULL selepas menggunakan perkhidmatan web. Perkhidmatan web menghantar data JSON yang nampaknya mengikut sintaks yang betul:
{"action":"set","user":"123123123123","status":"OK"}
Walau bagaimanapun, apabila cuba menyahkod muatan JSON ini dalam aplikasi PHP menggunakan json_decode($foo, true), ia secara mengelirukan mengembalikan NULL.
Potensi Penyelesaian
Untuk menangani isu yang membingungkan ini, OP mengabaikan faktor yang berpotensi kritikal: petikan ajaib PHP. Petikan ajaib, jika didayakan pada pelayan, boleh mendatangkan malapetaka pada data masuk dengan melarikan diri daripada aksara yang berpotensi berbahaya. Dalam keadaan ini, perkhidmatan web nampaknya menghantar JSON yang tidak dapat dielakkan, menyebabkan pertembungan dengan petikan ajaib.
Untuk mengelakkan isu ini, lumpuhkan petikan ajaib dengan menambahkan baris berikut pada permulaan skrip PHP:
if (get_magic_quotes_gpc()) { $param = stripslashes($_POST['param']); } else { $param = $_POST['param']; } $param = json_decode($param, true);
Ini memastikan bahawa data JSON yang diterima daripada perkhidmatan web kekal tidak terjejas oleh petikan ajaib, menyelesaikan penyahkodan masalah.
Atas ialah kandungan terperinci Mengapa json_decode Mengembalikan NULL Selepas Panggilan Perkhidmatan Web?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!