Обнаружение сбоя декодирования json() в PHP


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

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

И в случае, если один не создает исключения. Так что я не уверен, как проверить наличие сбоя декодирования.

Идеи?

 17
Author: Anthony Forloney, 2010-02-23

1 answers

Вам придется проверить 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;
}
 33
Author: Anthony Forloney, 2010-02-28 18:34:50