Web サービス呼び出し後に NULL を返す json_decode のトラブルシューティング
json_decode を使用して Web サービスから取得した JSON データを解析すると、時折不可解な問題が発生することがあります。ここで、戻り値は NULL です。この記事では、潜在的な原因を詳しく調べ、この問題の解決策を提供します。
このシナリオの主な原因の 1 つは、サーバー内での PHP マジック クオートの不適切な処理です。マジック クオートは、フォーム データ内の引用符やバックスラッシュなどの特定の文字を自動的にエスケープする PHP 構成です。
マジック クオートが有効になっている場合、Web サービスから受信した JSON データが破損し、json_decode が失敗する可能性があります。この問題を修正するには、マジック クオートを無効にするか、JSON 文字列をデコードする前にスラッシュを選択的に削除します。
この状況に対処する方法の例を次に示します。
if (get_magic_quotes_gpc()) { // Magic quotes are enabled, remove slashes $jsonData = stripslashes($_POST['jsonData']); } else { $jsonData = $_POST['jsonData']; } $data = json_decode($jsonData, true);
この例ではまず、get_magic_quotes_gpc() 関数を使用してマジック クオートが有効になっているかどうかを確認します。含まれている場合は、stripslashes() 関数を使用して、エスケープされた文字を JSON 文字列から削除します。
JSON 文字列が適切にフォーマットされたら、json_decode を使用してそれを連想配列に解析できます。このソリューションは、Web サービスから取得した JSON データを処理するときに json_decode が NULL を返す問題を解決します。
以上がWeb サービス呼び出し後に json_decode が NULL を返すのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。