我无法处理json decode错误。我在下面提到我的代码: -
try{
$jsonData=file_get_contents($filePath). ']';
$jsonObj = json_decode($jsonData, true);
} catch(Exception $e){
echo '{"result":"FALSE","message":"Caught exception: '.
$e->getMessage().' ~'.$filePath.'"}';
}
我是新的php程序员。对不起,如果出了什么问题。
答案 0 :(得分:16)
处理json解码错误的另一种方法: -
if ($jsonObj === null && json_last_error() !== JSON_ERROR_NONE) {
echo "json data is incorrect";
}
答案 1 :(得分:5)
您可以尝试验证json_decode
try {
$jsonData = file_get_contents($filePath) . ']';
$jsonObj = json_decode($jsonData, true);
if (is_null($jsonObj)) {
throw ('Error');
}
} catch (Exception $e) {
echo '{"result":"FALSE","message":"Caught exception: ' .
$e->getMessage() . ' ~' . $filePath . '"}';
}
答案 2 :(得分:4)
json_decode在发生错误时返回null,如无效json或超出深度大小。所以基本上你只需检查你获得的jsondata是否为null。如果是,请使用json_last_error查看出现了什么问题,如果没有,则继续使用该脚本。
$json_data = json_decode($source, true);
if($json_data == null){
echo json_last_error() . "<br>";
echo $source; // good to check what the source was, to see where it went wrong
}else{
//continue with script
}
这样的事情应该有用。
答案 3 :(得分:3)
自PHP 7.3起,就可以使用JSON_THROW_ON_ERROR
常量。
try {
$jsonObj = json_decode($jsonData, true, $depth=512, JSON_THROW_ON_ERROR);
} catch (Exception $e) {
// handle exception
}
更多:https://www.php.net/manual/de/function.json-decode.php#refsect1-function.json-decode-changelog