php json_decode() Возвращает null -- как понять что не так, какая именно ошибка JSON -- РЕШЕНИЕ
Primary tabs
Например, пусть имеется код вроде:
$postdata = \json_decode(file_get_contents('php://input'), true);
И он для входных данных:
$a = file_get_contents('php://input'); /* Содержит: user_id=10&diagnostics%5B0%5D%5Bid_diag%5D=1&diagnostics%5B0%5D%5Bmethodics_id%5D=1&diagnostics%5B0%5D%5Bserver_id%5D=-1&diagnostics%5B0%5D%5Bclient_id%5D=35&diagnostics%5B0%5D%5Bdate%5D=1460408440&diagnostics%5B0%5D%5Bdata%5D%5B%5D=52&diagnostics%5B0%5D%5Bdata%5D%5B%5D=52&diagnostics%5B0%5D%5Bdata%5D%5B%5D=82&diagnostics%5B0%5D%5Bdata%5D%5B%5D=85&diagnostics%5B0%5D%5Bdata%5D%5B%5D=65&diagnostics%5B0%5D%5Bdata%5D%5B%5D=45&diagnostics%5B0%5D%5Bdata%5D%5B%5D=15&diagnostics%5B0%5D%5Bdata%5D%5B%5D=17&diagnostics%5B0%5D%5Bdata%5D%5B%5D=12&diagnostics%5B0%5D%5Bdata%5D%5B%5D=58&diagnostics%5B0%5D%5Bdata%5D%5B%5D=5&diagnostics%5B0%5D%5Bdata%5D%5B%5D=96&diagnostics%5B0%5D%5Bdata%5D%5B%5D=22&diagnostics%5B0%5D%5Bdata%5D%5B%5D=69&diagnostics%5B0%5D%5Bdata%5D%5B%5D=45&diagnostics%5B0%5D%5Bdata%5D%5B%5D=36&diagnostics%5B0%5D%5Bdata%5D%5B%5D=87&diagnostics%5B0%5D%5Bdata%5D%5B%5D=52&diagnostics%5B0%5D%5Bdata%5D%5B%5D=45&diagnostics%5B0%5D%5Bdata%5D%5B%5D=14&diagnostics%5B0%5D%5Bdata%5D%5B%5D=21&diagnostics%5B0%5D%5Bdata%5D%5B%5D=54&diagnostics%5B0%5D%5Bdata%5D%5B%5D=45&diagnostics%5B0%5D%5Bdata%5D%5B%5D=58 */
возвращает null. Значит с JSON-ом что-то не то.
Чтобы выяснить что именно используйте json_last_error(), например так:
// укажите ваше декодируемое (которое нужно раскодировать) значение в $string $string = 'user_id=10&diagnostics%5B0%5D%5Bid_diag%5D=1&diagnostics%5B0%5D%5Bmethodics_id%5D=1&diagnostics%5B0%5D%5Bserver_id%5D=-1&diagnostics%5B0%5D%5Bclient_id%5D=35&diagnostics%5B0%5D%5Bdate%5D=1460408440&diagnostics%5B0%5D%5Bdata%5D%5B%5D=52&diagnostics%5B0%5D%5Bdata%5D%5B%5D=52&diagnostics%5B0%5D%5Bdata%5D%5B%5D=82&diagnostics%5B0%5D%5Bdata%5D%5B%5D=85&diagnostics%5B0%5D%5Bdata%5D%5B%5D=65&diagnostics%5B0%5D%5Bdata%5D%5B%5D=45&diagnostics%5B0%5D%5Bdata%5D%5B%5D=15&diagnostics%5B0%5D%5Bdata%5D%5B%5D=17&diagnostics%5B0%5D%5Bdata%5D%5B%5D=12&diagnostics%5B0%5D%5Bdata%5D%5B%5D=58&diagnostics%5B0%5D%5Bdata%5D%5B%5D=5&diagnostics%5B0%5D%5Bdata%5D%5B%5D=96&diagnostics%5B0%5D%5Bdata%5D%5B%5D=22&diagnostics%5B0%5D%5Bdata%5D%5B%5D=69&diagnostics%5B0%5D%5Bdata%5D%5B%5D=45&diagnostics%5B0%5D%5Bdata%5D%5B%5D=36&diagnostics%5B0%5D%5Bdata%5D%5B%5D=87&diagnostics%5B0%5D%5Bdata%5D%5B%5D=52&diagnostics%5B0%5D%5Bdata%5D%5B%5D=45&diagnostics%5B0%5D%5Bdata%5D%5B%5D=14&diagnostics%5B0%5D%5Bdata%5D%5B%5D=21&diagnostics%5B0%5D%5Bdata%5D%5B%5D=54&diagnostics%5B0%5D%5Bdata%5D%5B%5D=45&diagnostics%5B0%5D%5Bdata%5D%5B%5D=58'; echo 'Декодируем: ' . $string; json_decode($string); switch (json_last_error()) { case JSON_ERROR_NONE: echo ' - Ошибок нет'; break; case JSON_ERROR_DEPTH: echo ' - Достигнута максимальная глубина стека'; break; case JSON_ERROR_STATE_MISMATCH: echo ' - Некорректные разряды или не совпадение режимов'; break; case JSON_ERROR_CTRL_CHAR: echo ' - Некорректный управляющий символ'; break; case JSON_ERROR_SYNTAX: echo ' - Синтаксическая ошибка, не корректный JSON'; break; case JSON_ERROR_UTF8: echo ' - Некорректные символы UTF-8, возможно неверная кодировка'; break; default: echo ' - Неизвестная ошибка'; break; } echo PHP_EOL;
- Log in to post comments
- 3754 reads