Rumah >pembangunan bahagian belakang >tutorial php >Mengapa json_decode Mengembalikan NULL Selepas Panggilan Perkhidmatan Web?

Mengapa json_decode Mengembalikan NULL Selepas Panggilan Perkhidmatan Web?

Susan Sarandon
Susan Sarandonasal
2024-12-05 11:50:10833semak imbas

Why is json_decode Returning NULL After a Web Service Call?

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!

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