Как валидировать JSON: типичные ошибки и их исправление
Ваш API возвращает ошибку 400. В логе написано «Invalid JSON». Вы смотрите на данные запроса, и всё выглядит нормально — пока не замечаете одинарную кавычку, спрятавшуюся в строке 47. Ошибки валидации JSON раздражают именно потому, что это часто крошечные ошибки, которые ломают всё.
Самые распространённые синтаксические ошибки JSON
1. Висячие запятые
Ошибка номер один в JSON. JavaScript допускает висячие запятые, поэтому разработчики переносят эту привычку в JSON, где это недопустимо.
{
"name": "Alex",
"age": 30
}
Удаляйте запятую после последнего значения. Всегда.
2. Одинарные кавычки вместо двойных
JSON требует двойные кавычки. Это валидный JavaScript, но невалидный JSON: {'name': 'Alex'}. Замените все одинарные кавычки на двойные.
3. Ключи без кавычек
Каждый ключ в JSON должен быть строкой в кавычках. {name: "Alex"} должно быть {"name": "Alex"}.
4. Пропущенные запятые между элементами
Легко пропустить при ручном редактировании JSON — забыть запятую между парами ключ-значение.
5. Несовпадающие скобки
Открытие {, но закрытие ], или неправильная вложенность. Используйте JSON валидатор, который подсвечивает парные скобки.
Как эффективно валидировать JSON
Быстрая ручная валидация
Вставьте ваш JSON в наш JSON валидатор. Он подсвечивает точную строку и позицию символа любой ошибки. Вся обработка происходит в вашем браузере — ваши данные никогда не покидают ваш компьютер.
Программная валидация
Для приложений валидируйте JSON на каждой границе. В JavaScript оберните JSON.parse() в try-catch. В Python используйте json.loads() с обработкой исключений.
Валидация по схеме
Синтаксическая валидация показывает, что JSON правильно сформирован. Валидация по схеме показывает, что у него правильная структура. Используйте наш JSON Schema валидатор для определения ожидаемых форм данных.
Пошаговая отладка ошибок JSON
- Сначала отформатируйте — Вставьте в JSON форматтер для правильного отступа
- Проверьте позицию ошибки — Большинство парсеров сообщают строку и столбец
- Ищите обычных подозреваемых — Висячие запятые, одинарные кавычки, ключи без кавычек
- Валидируйте инкрементально — Для большого JSON валидируйте секции по отдельности
- Сравнивайте версии — Используйте JSON Diff для сравнения с рабочей версией
Настройка автоматической валидации
В вашем редакторе
Включите подсветку синтаксиса JSON, линтеры и валидацию по схеме для конфигурационных файлов.
В вашем CI-конвейере
Добавьте валидацию JSON в процесс сборки, чтобы ловить ошибки до мержа.
В вашем API
Никогда не доверяйте входящему JSON. Валидируйте и синтаксис, и схему на границе вашего API. Возвращайте понятные сообщения об ошибках.
Часто задаваемые вопросы
В чём разница между валидацией JSON и валидацией JSON Schema?
Валидация JSON проверяет синтаксис (правильные кавычки, скобки, запятые). Валидация JSON Schema проверяет структуру — правильные поля, правильные типы, правильные ограничения.
Почему мой JSON работает в JavaScript, но не проходит в других парсерах?
JavaScript более снисходителен, чем спецификация JSON. Он допускает висячие запятые, одинарные кавычки и комментарии. Строгие парсеры отклоняют всё это.
Связанные ресурсы
- Лучшие практики форматирования JSON — пишите более чистый JSON с самого начала
- Руководство по валидации JSON Schema — обеспечение контрактов данных
- Инструмент JSON валидатор — мгновенная валидация синтаксиса JSON
- Инструмент JSON форматтер — форматирование и исправление JSON