ホームページ >バックエンド開発 >PHPチュートリアル >Web サービス呼び出し後に「json_decode」が NULL を返すのはなぜですか?

Web サービス呼び出し後に「json_decode」が NULL を返すのはなぜですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-12-01 16:14:24920ブラウズ

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

Web サービス呼び出し後に JSON デコードで Null が返される

このスレッドでは、Web サービス呼び出しからの JSON 応答をデコードするときに発生する特殊な動作について調査します。この問題は、Web サービスが JSON データを返しているにもかかわらず、json_decode 関数が NULL を返すために発生します。

これを解決するには、根本原因を特定することが重要です。このシナリオでは、問題の鍵はマジック クオート、つまり非推奨の 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 を使用して正常にデコードできます。

以上がWeb サービス呼び出し後に「json_decode」が NULL を返すのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。