”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > 如何使用 PHP 的 json_decode() 有效处理错误的 JSON 数据?

如何使用 PHP 的 json_decode() 有效处理错误的 JSON 数据?

发布于2024-11-25
浏览:887

How Can I Effectively Handle Bad JSON Data with PHP\'s `json_decode()`?

在 PHP 中使用 json_decode() 处理错误的 JSON 数据

使用 json_decode() 处理 JSON 数据时,处理无效数据至关重要有效地。虽然提供的脚本可以检测到诸如 { bar: "baz" } 之类的字符串的错误 JSON,但它无法处理诸如“无效数据”之类的非字符串数据。

理解 json_decode()

要解决这个问题,有必要了解 json_decode():

  • 它返回解码后的数据发生错误时返回 null。
  • 当 JSON 字符串包含 null 时,它也可以返回 null。
  • 它会引发错误警告。

使用 @ 运算符抑制警告

要抑制警告,一种选择是使用 @运算符:

$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 解析错误。

最新教程 更多>

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3