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

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

Susan Sarandon
Susan Sarandon原創
2024-12-01 16:14:24986瀏覽

Why Does `json_decode` Return NULL After a Web Service Call?

Web 服務呼叫後 JSON 解碼傳回 Null

此執行緒探討了解碼 Web 服務呼叫的 JSON 回應時遇到的特殊行為。該問題的出現​​是由於 json_decode 函數傳回 NULL,儘管 Web 服務傳回 JSON 資料。

要解決這個問題,找出根本原因非常重要。在給定的場景中,問題的關鍵在於魔術引號,這是一個已棄用的 PHP 配置。魔術引號會自動轉義某些字元並更改其在全域變數中的意義,例如 $_GET、$_POST、$_COOKIE 等。

啟用魔術引號時,它們會透過破壞從接收到的 JSON 資料來幹擾解碼過程。網路服務。這會導致 json_decode 失敗並傳回 NULL。

解:

要解決此問題,必須專門停用 $_POST 變數的魔術引號。這可以透過以下程式碼來實現:

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

透過停用魔術引號,JSON 資料保持不變,並且可以使用 json_decode 成功解碼。

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

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