在 PHP 中使用 json_decode() 处理错误的 JSON 数据
使用 json_decode() 处理 JSON 数据时,处理无效数据至关重要有效地。虽然提供的脚本可以检测到诸如 { bar: "baz" } 之类的字符串的错误 JSON,但它无法处理诸如“无效数据”之类的非字符串数据。
理解 json_decode()
要解决这个问题,有必要了解 json_decode():
使用 @ 运算符抑制警告
抑制警告,一种选择是使用 @ 运算符:
$data = @json_decode($_POST);
这种方法可以消除警告,但需要额外的检查来处理错误和空值:
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 解析错误。
以上是如何使用 PHP 的 json_decode() 有效处理错误的 JSON 数据?的详细内容。更多信息请关注PHP中文网其他相关文章!