首頁 >後端開發 >php教程 >為什麼 json_decode 在 Web 服務呼叫後會回傳 NULL?

為什麼 json_decode 在 Web 服務呼叫後會回傳 NULL?

Susan Sarandon
Susan Sarandon原創
2024-12-05 11:50:10806瀏覽

Why is json_decode Returning NULL After a Web Service Call?

Web 服務呼叫後的JSON 解碼問題

在這種有關JSON 解析的情況下,OP 遇到一個特殊問題,即json_decode 在呼叫後莫名其妙地回傳NULL呼叫網路服務。 Web 服務傳輸看似遵循正確語法的JSON 資料:

{"action":"set","user":"123123123123","status":"OK"}

但是,在嘗試使用json_decode($foo, true) 在PHP 應用程式中解碼此JSON 負載時,它令人困惑地返回NULL。

潛在的解決方案

為了解決這個令人困惑的問題, OP 忽略了一個潛在的關鍵因素:PHP 魔術引號。如果在伺服器上啟用魔術引號,則可能會透過轉義潛在危險字元來對傳入資料造成嚴重破壞。在這種情況下,Web 服務似乎正在傳輸未轉義的 JSON,從而導致與魔術引號發生衝突。

要避免此問題,請透過將以下行新增至PHP 腳本的開頭來停用魔術引號:

if (get_magic_quotes_gpc()) {
  $param = stripslashes($_POST['param']);
} else {
  $param = $_POST['param'];
}
$param = json_decode($param, true);

這可確保從Web 服務接收的JSON 資料不受魔術引號的影響,從而解決解碼問題。

以上是為什麼 json_decode 在 Web 服務呼叫後會回傳 NULL?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn