К содержанию
CheckcraftСкачать
Практический сценарий

Unexpected end of JSON input: почему JSON обрывается

Ошибка значит, что разбор дошёл до конца текста, а JSON не закончен. Чаще всего ответ просто пустой, реже его обрезали по дороге.

Checkcraft ·

Поможем с первой проверкой →

Что означает ошибка

JSON.parse дочитал строку до конца, а значение не закрыто: строка пустая, не хватает закрывающей скобки или кавычки. Chrome и Node.js пишут Unexpected end of JSON input, Firefox — JSON.parse: unexpected end of data. Валидатор покажет, на каком символе текст оборвался.

Пустой ответ и response.json()

Самая частая причина — вызов response.json() на ответе без тела: 204 No Content, 201 без данных, 500 с пустым телом или ответ на HEAD. Сначала прочитайте текст и проверьте код ответа, а разбирайте JSON, только если текст не пустой.

const res = await fetch('/api/orders/1042');
const text = await res.text();          // сначала текст, а не res.json()
if (!res.ok) throw new Error(res.status + ': ' + text);
const data = text ? JSON.parse(text) : null;  // пустой ответ — не ошибка JSON

Если JSON обрезан

Ответ обрывается, когда прокси закрывает соединение по таймауту, срабатывает лимит размера или падает сервис. Ещё один источник — копирование из логов: многие системы обрезают длинные строки. Сравните фактическую длину тела с заголовком Content-Length и посмотрите, чем заканчивается ответ.

curl -s -D - https://api.example.com/orders -o body.json
wc -c body.json

Как не пропускать это в тестах

Проверяйте код ответа и то, что тело не пустое, раньше, чем значения полей. Тогда отчёт скажет «пришёл 204 без тела» вместо невнятной ошибки разбора. В Checkcraft это отдельные правила на код и на наличие полей.

Следующий шаг

Повторите это на своём API

Checkcraft — настольная программа: сохраняет проверки ответа API без кода и показывает, что не совпало. Начните с учебного примера, затем подставьте свои обезличенные данные. Free работает на Windows и Linux без ограничения срока.

Скачать FreeКак получить и запустить приложение

Скачивание без регистрации и почты, архив готов за пару минут. Состав бесплатной версии опубликован на странице тарифов.

Документация

MDN: ошибки JSON.parse

Начните с примера по ссылкам и сопоставьте результат с требованием своей проверки.

Можно спросить человека

Поможем с первой проверкой

Расскажите, что хотите проверить или на каком шаге остановились. Поможем запустить Checkcraft, подобрать пример и разобраться с первым прогоном. Можно написать до скачивания.

Telegram-группа открытая: не публикуйте пароли, токены и конфиденциальные рабочие данные. Для первого вопроса достаточно описания задачи.

Можно написать напрямую support@checkcraft.ru

Без регистрации. Ответим по email. Это обращение в поддержку, а не подписка на рассылку.