Перевірка JSON онлайн
Каже, чи валідний JSON, і якщо ні, показує рядок, колонку та найімовірнішу причину.
Знаходить кому, через яку не парситься весь файл
Файл конфігурації, вебхук від платіжки чи відповідь стороннього сервісу не розбираються, а помилка від json_decode каже лише Syntax error. Інструмент показує точний рядок і колонку, підсвічує місце і пояснює, що там не так.
json_decode повертає null на помилці, і це легко сплутати з валідним JSON, який дорівнює null. Тому в новому коді додавайте JSON_THROW_ON_ERROR і ловіть JsonException, а в старому перевіряйте json_last_error(). З PHP 8.3 є json_validate(), яка лише перевіряє синтаксис без побудови структури і економить памʼять на великих документах.
// PHP 8.3+: перевірка без розбору
if (! json_validate($payload)) {
throw new InvalidArgumentException('Невалідний JSON: ' . json_last_error_msg());
}
// Розбір з винятком замість тихого null
try {
$data = json_decode($payload, true, 512, JSON_THROW_ON_ERROR);
} catch (JsonException $e) {
report($e); // "Syntax error" з кодом JSON_ERROR_SYNTAX
}
Що питають про цей інструмент
Кома після останнього елемента, одинарні лапки замість подвійних, ключ без лапок, коментар усередині, невидимий символ BOM на початку файлу. Інструмент показує позицію, і зазвичай причина стоїть на символ раніше.
json_decode вимагає коректний UTF-8. Якщо рядок прийшов з бази у Windows-1251 або був обрізаний посеред багатобайтового символу, розбір падає з JSON_ERROR_UTF8. Перевірте кодування джерела, а не синтаксис.
Ні, лише синтаксис. Що всередині мають бути саме такі ключі й типи, описує JSON Schema, і для цього в PHP є окремі бібліотеки, наприклад opis/json-schema.