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

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

Susan Sarandon
Susan Sarandonオリジナル
2024-12-05 11:50:10804ブラウズ

Why is json_decode Returning NULL After a Web Service Call?

Web サービス呼び出し後の JSON デコードの問題

JSON 解析に関するこの状況では、OP で json_decode が不可解にも呼び出し後に NULL を返すという特有の問題が発生します。 Web サービスを呼び出します。 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 データがマジック クオートの影響を受けずに保たれ、デコードが解決されます。問題があります。

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

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