Обнаружение ошибки json_decode () в PHP - PullRequest
19 голосов
/ 23 февраля 2010

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

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

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

Идеи

1 Ответ

33 голосов
/ 23 февраля 2010

Вы должны проверить 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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...