PHP の json_decode() を使用した不正な JSON データの処理
json_decode() を使用して JSON データを処理する場合、無効なデータを処理することが重要です効果的に。提供されたスクリプトは、{ bar: "baz" } のような文字列の不正な JSON を検出できますが、「無効なデータ」などの非文字列データを処理できません。
json_decode()
この問題に対処するには、json_decode():
@ 演算子を使用した警告の抑制
警告を抑制するには、@ 演算子を使用するオプションがあります。 Operator:
$data = @json_decode($_POST);
このアプローチでは警告が表示されなくなりますが、エラーと null 値を処理するために追加のチェックが必要です:
if ($data === null && json_last_error() !== JSON_ERROR_NONE) { echo "Incorrect data"; }
カスタム エラー処理
別のオプションは、カスタム エラー処理スクリプトを作成することです。
function handle_json_error() { $error = json_last_error(); switch ($error) { case JSON_ERROR_NONE: return true; case JSON_ERROR_DEPTH: echo "Maximum depth exceeded"; break; case JSON_ERROR_STATE_MISMATCH: echo "Invalid or malformed JSON"; break; case JSON_ERROR_CTRL_CHAR: echo "Control character error"; break; case JSON_ERROR_SYNTAX: echo "Syntax error"; break; case JSON_ERROR_UTF8: echo "Malformed UTF-8 characters"; break; default: echo "Unknown error"; } return false; } if (!handle_json_error()) { echo "Bad JSON data!"; }
このスクリプトは詳細なエラー メッセージを提供し、さまざまな JSON 解析エラーを処理します。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3