Что такое JSON
JSON (JavaScript Object Notation) — текстовый формат обмена данными, который стал стандартом де-факто для веб-разработки. Практически любой современный API отдаёт ответы именно в нём, а конфигурационные файлы вроде package.json или composer.json используют тот же синтаксис.
Формат придумал Дуглас Крокфорд в начале двухтысячных как альтернативу громоздкому XML. Синтаксис заимствован из JavaScript, но JSON не привязан к языку: библиотеки для работы с ним есть везде — от Python до Rust.
Типы данных и синтаксис
| Тип | Пример | Примечание |
|---|---|---|
| Объект | {"key": "value"} | Ключи только в двойных кавычках |
| Массив | [1, 2, 3] | Элементы любого типа |
| Строка | "текст" | Только двойные кавычки |
| Число | 42, -3.14, 1e5 | Без ведущих нулей и суффиксов |
| Логический | true, false | Строчными буквами |
| Пустое значение | null | Не undefined и не None |
Ошибки, которые встречаются чаще всего
- Лишняя запятая в конце. После последнего элемента массива или объекта запятая недопустима, хотя JavaScript её прощает
- Одинарные кавычки. В JSON разрешены только двойные — и для строк, и для ключей
- Ключ без кавычек. Запись
{name: "Олег"}валидна в JavaScript, но не в JSON - Комментарии. Стандарт их не предусматривает, ни
//, ни/* */ - Неэкранированные символы. Кавычка, обратный слэш и перенос строки внутри строки должны быть экранированы
- Значения из JavaScript.
undefined,NaNиInfinityв JSON не существуют - Невидимый BOM. Файл, сохранённый с меткой порядка байтов, ломает разбор в некоторых языках
Возможности инструмента
- Форматирование — превращает сплошную строку в читаемую структуру с отступами в 2 пробела, 4 пробела или табуляцию
- Проверка на ошибки — с указанием строки, позиции и описания проблемы
- Сжатие — убирает все пробелы и переносы, уменьшая размер для передачи по сети
- Сортировка ключей — приводит объекты к алфавитному порядку, что удобно при сравнении двух версий файла
- Подсветка синтаксиса — ключи, строки, числа и логические значения окрашены по-разному
- Статистика — количество ключей и глубина вложенности структуры
Форматированный или сжатый
Отформатированный JSON с отступами нужен человеку: его читают в редакторе, правят руками, сравнивают в системе контроля версий. Сжатый вариант предназначен для машин — он занимает на 15–30 % меньше места и быстрее передаётся.
На практике держите конфиги отформатированными, а ответы API отдавайте сжатыми. Впрочем, при включённом gzip разница в размере становится небольшой, поэтому многие сервисы оставляют читаемый формат и в продакшене.
JSON и JSON5: в чём разница
Ограничения строгого JSON раздражают разработчиков, поэтому появились расширения. JSON5 разрешает комментарии, одинарные кавычки, ключи без кавычек и запятые в конце. Формат JSONC (JSON with Comments) используется в настройках VS Code.
Важно понимать: это отдельные форматы. Стандартный парсер их не примет, и наш инструмент проверяет соответствие именно классическому JSON по спецификации RFC 8259.
Безопасность
Разбор и форматирование выполняются встроенным парсером браузера прямо на вашем устройстве. Данные не отправляются на сервер и нигде не сохраняются — поэтому через инструмент можно безопасно прогонять ответы API с токенами, конфиги и внутренние документы.
Частые вопросы
Почему мой JSON не проходит проверку?
Можно ли добавлять комментарии в JSON?
"_comment" — формально это обычный ключ, и парсер его примет.Какой отступ считается правильным?
Зачем сортировать ключи?
Какой максимальный размер файла?
Обрабатывается ли кириллица корректно?
\u0410 — при форматировании она автоматически превращается обратно в читаемые символы.