Как проверить JSON на ошибки
- Вставьте JSON или откройте файл. Проверка запускается автоматически прямо во время ввода.
- Зелёное сообщение «Валидный JSON» со статистикой означает, что документ корректен. Иначе прочитайте сообщение об ошибке: в нём указаны строка, столбец и то, что ожидалось в этом месте.
- Исправьте подсвеченную строку или нажмите Исправить, а затем — Форматировать, чтобы результат было легко читать.
Частые ошибки в JSON и как их исправить
| Ошибка | Пример | Как исправить |
|---|---|---|
| Лишняя запятая в конце | [1, 2, ] | Удалите запятую перед ] или } |
| Одинарные кавычки | {'name': 'Ada'} | Используйте двойные кавычки: {"name": "Ada"} |
| Ключ без кавычек | {name: "Ada"} | Возьмите ключ в кавычки: {"name": "Ada"} |
| Пропущенная запятая | {"a": 1 "b": 2} | Добавьте запятую между свойствами |
| Комментарий | // settings | В JSON нет комментариев — удалите их |
| Перенос строки в строковом значении | "line 1⏎line 2" | Пишите \n вместо настоящего переноса строки |
| Недопустимое значение | undefined, NaN, True | Используйте null, число, true или false |
| Ведущий ноль | {"zip": 01234} | Пишите 1234 или храните значение как текст: "01234" |
| Пропущенная скобка | {"a": [1, 2} | Закрывайте каждую [ скобкой ], а каждую { — скобкой } |
Каким должен быть валидный JSON
Формат JSON описан в RFC 8259. Валидный документ подчиняется нескольким строгим правилам:
- Он содержит ровно одно значение верхнего уровня — обычно объект
{}или массив[]. - Члены объекта — это пары
"key": value, разделённые запятыми; ключи всегда являются строками в двойных кавычках. - Строки заключаются в двойные кавычки; внутри них допустимы только escape-последовательности
\" \\ \/ \b \f \n \r \tи\uXXXX. - Числа — десятичные: без ведущих нулей, без знака
+, без шестнадцатеричной записи, безNaNиInfinity. true,falseиnullпишутся строчными буквами.- Между токенами допустимы пробелы, табуляция и переносы строк, но не комментарии.
Проверка JSON в командной строке
- Python:
python -m json.tool file.jsonвыводит строку и столбец первой ошибки. - jq:
jq empty file.jsonзавершается с сообщением об ошибке, если файл невалиден. - Node.js:
node -e "JSON.parse(require('fs').readFileSync('file.json', 'utf8'))"
Часто задаваемые вопросы
Чем JSON-валидатор отличается от JSON-линтера?
Валидатор проверяет, соответствует ли текст синтаксису JSON. Линтер обычно также следит за единым стилем. Этот валидатор строго проверяет JSON на соответствие RFC 8259, а кнопка «Форматировать» ещё и приводит отступы к единому виду.
Можно ли проверить JSON по JSON Schema?
Эта страница проверяет синтаксис. Чтобы описать ожидаемую структуру данных, создайте схему по документу-примеру с помощью нашего генератора JSON Schema.
Почему JSON здесь валиден, а другая программа его отвергает?
Программы часто ожидают определённую структуру (конкретные ключи или типы), определённую кодировку — например, UTF-8 без метки порядка байтов (BOM) — или числа в ограниченном диапазоне. Синтаксически валидный JSON всё равно может нарушать такие правила приложения.
Валиден ли JSON с комментариями (JSONC)?
Нет. Стандартный JSON не допускает комментарии. Некоторые редакторы принимают их в файлах настроек (JSONC), но API и JSON.parse — нет. «Исправить» удалит комментарии за вас.