如何确定字符串是否为有效的 JSON?

2022-08-30 11:07:52

有谁知道PHP的强大(和防弹)is_JSON函数片段?我(显然)有一种情况,我需要知道字符串是否是JSON。

嗯,也许可以通过JSONLint请求/响应运行它,但这似乎有点过分了。


答案 1

如果您使用的是内置的json_decode PHP 函数,json_last_error 会返回最后一个错误(例如,当您的字符串不是 JSON 时JSON_ERROR_SYNTAX)。

通常json_decode无论如何都会返回。null


答案 2

对于我的项目,我使用此功能(请阅读json_decode()文档上的“注释”)。

将相同的参数传递给json_decode(),您可以检测特定的应用程序“错误”(例如深度错误)

> 菲律宾比索 = 5.6

// PHP >= 5.6
function is_JSON(...$args) {
    json_decode(...$args);
    return (json_last_error()===JSON_ERROR_NONE);
}

> PHP = 5.3

// PHP >= 5.3
function is_JSON() {
    call_user_func_array('json_decode',func_get_args());
    return (json_last_error()===JSON_ERROR_NONE);
}

用法示例:

$mystring = '{"param":"value"}';
if (is_JSON($mystring)) {
    echo "Valid JSON string";
} else {
    $error = json_last_error_msg();
    echo "Not valid JSON string ($error)";
}

推荐