I am unable to handle JSON decode errors. Here is my code:
try {
$jsonData = file_get_contents($filePath) . \']\';
json_decode returns null when a error occurs, like no valid json or exceeded depth size. So basically you just check with if whether the jsondata you obtained is null or not. If it is, use json_last_error to see what went wrong, if not then continue with the script.
$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
}
Something like that should work.
Another way to handle json decode error:-
if ($jsonObj === null && json_last_error() !== JSON_ERROR_NONE) {
echo "json data is incorrect";
}
May be you can try, validating 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 . '"}';
}
Read this too
Since PHP 7.3 one can use the JSON_THROW_ON_ERROR
constant.
try {
$jsonObj = json_decode($jsonData, true, $depth=512, JSON_THROW_ON_ERROR);
} catch (Exception $e) {
// handle exception
}
More: https://www.php.net/manual/de/function.json-decode.php#refsect1-function.json-decode-changelog