Столкнулся с ошибкой JSON_ERROR_SYNTAX при чтении JSON файла. При этом скопированное содержимое отлично обрабатывается и валидируется, например, серивосом jsoneditoronline.
Ошибка json_decode при обработке данных из файла (JSON_ERROR_SYNTAX)
20.07.2021
Совет: т.к. json_decode не возвращает ошибку, то узнать ее можно воспользовавшись функцией json_last_error.
Проблема, в моем случаи, была с BOM (Byte Order Mark) который присутствовал в начале файла. Проблему решил так:
function removeBOM($data) { if (0 === strpos(bin2hex($data), 'efbbbf')) { return substr($data, 3); } return $data; } $string = removeBOM(file_get_contents('FILE.json')); 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; }