Unexpected token is not valid JSON: что значит ошибка и как её найти
Ошибка говорит, что текст, который вы разбираете как JSON, им не является. Посмотрите на символ после слов Unexpected token: он почти всегда сразу называет причину.
Что означает символ в сообщении
Если стоит < и дальше <!DOCTYPE или <html, сервер вернул HTML-страницу вместо JSON: ошибку, страницу входа или главную страницу сайта. Если в сообщении [object Object] или старое Unexpected token o, в JSON.parse передали уже готовый объект. Если undefined, переменная с ответом пустая. Если Unexpected end of JSON input, ответ пустой или обрезан. Если Expected property name или Unexpected token }, в самом JSON лишняя запятая, одинарные кавычки или название поля без кавычек.
Как быстро найти место ошибки
В сообщении браузера обычно есть номер позиции или строка и столбец. Вставьте текст в валидатор JSON на этом сайте: он покажет строку, символ и причину на русском. Если ошибка возникла при запросе к API, откройте инструменты разработчика в браузере, вкладку Network, нужный запрос и вкладку Response: там видно, что на самом деле прислал сервер.
Как не получить ошибку в коде
Прежде чем вызывать response.json(), проверьте код ответа и заголовок Content-Type. Тогда вместо загадочной ошибки разбора вы увидите понятное сообщение: сервер ответил 404 или вернул HTML.
const response = await fetch('/api/orders/42');
const type = response.headers.get('content-type') || '';
if (!response.ok || !type.includes('application/json')) {
const text = await response.text();
throw new Error(`HTTP ${response.status}, ${type}: ${text.slice(0, 200)}`);
}
const order = await response.json();Если ошибка в Postman
В Postman ошибка разбора появляется, когда тест вызывает pm.response.json(), а ответ не JSON. Посмотрите код ответа и вкладку Body: часто это страница ошибки сервера или ответ без тела. В отчёте Checkcraft то же место видно сразу: код ответа, заголовки и тело рядом с правилами, которые не совпали.
Повторите это на своём API
Checkcraft — настольная программа: сохраняет проверки ответа API без кода и показывает, что не совпало. Начните с учебного примера, затем подставьте свои обезличенные данные. Free работает на Windows и Linux без ограничения срока.
Скачать FreeКак получить и запустить приложениеСкачивание без регистрации и почты, архив готов за пару минут. Состав бесплатной версии опубликован на странице тарифов.
Документация
Начните с примера по ссылкам и сопоставьте результат с требованием своей проверки.