检测 PHP 中的 json_decode() 故障

2022-08-30 19:10:35

当使用PHP时,我没有看到一种方法可以区分指示解码失败的返回值和正确解码的值:json_decode()NULLNULL

var_dump(json_decode('nonsense')); // returns NULL
var_dump(json_decode(json_encode(NULL))); // also returns NULL

第一个案例不会引发异常。所以我不确定如何测试解码失败。

想法?


答案 1

您必须检查json_last_error是否有任何 JSON 解析错误。

json_decode($string);
switch(json_last_error()) {
    case JSON_ERROR_DEPTH:
        echo ' - Maximum stack depth exceeded';
    break;
    case JSON_ERROR_CTRL_CHAR:
        echo ' - Unexpected control character found';
    break;
    case JSON_ERROR_SYNTAX:
        echo ' - Syntax error, malformed JSON';
    break;
    case JSON_ERROR_NONE:
        echo ' - No errors';
    break;
}

答案 2

推荐