ホームページ >バックエンド開発 >PHPチュートリアル >有効な JSON 形式にもかかわらず、JSON_DECODE() の「SYNTAX ERROR」を解決するにはどうすればよいですか?
オンライン フォーマッタでは有効な JSON にもかかわらず、JSON_ERROR_SYNTAX
外部フォーマッタでは JSON が有効に見えるにもかかわらず、json_decode() からの "SYNTAX ERROR" 応答が発生しました困惑するかもしれません。これは包括的な解決策です:
隠し文字の削除:
非表示の文字は構文エラーを引き起こす可能性があります。次のコードを使用してこれらの文字を削除します:
<code class="php">$json = file_get_contents('http://www.mywebservice'); // Remove unwanted characters for ($i = 0; $i <= 31; ++$i) { $json = str_replace(chr($i), "", $json); } $json = str_replace(chr(127), "", $json); // Handle BOM (Byte Order Mark) if (0 === strpos(bin2hex($json), 'efbbbf')) { $json = substr($json, 3); }</code>
クリーン化された JSON のデコード:
隠し文字が削除されたので、JSON をデコードします:
<code class="php">$obj = json_decode($json);</code>
エラー処理:
それでもデコードが失敗する場合は、json_last_error() を使用して特定のエラー コードを確認してください:
<code class="php">switch (json_last_error()) { case JSON_ERROR_NONE: echo 'JSON_ERROR_NONE'; break; case JSON_ERROR_DEPTH: echo 'JSON_ERROR_DEPTH'; break; // ... Other error codes default: echo 'Unknown Error'; break; }</code>
次の手順に従うことで、 JSON 構文エラーを修正し、JSON データを正常にデコードできます。 PHP 5.5 の json_last_error_msg() 関数は追加のエラー詳細を提供しますが、隠し文字やデコードの問題を解決した後は必要ない場合があります。
以上が有効な JSON 形式にもかかわらず、JSON_DECODE() の「SYNTAX ERROR」を解決するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。