Обнаружение ошибки json_decode() в PHP

При использовании PHP json_decode() я не вижу способа различать возвращаемое значение NULL, указывающее на ошибку при декодировании и правильно декодированное значение NULL:

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;
}