Что такое JSON
JSON (JavaScript Object Notation) — лёгкий формат обмена данными. Обмен между фронтендом и бэкендом, файлы конфигурации и ответы API используют JSON. Чёткая структура, читаемость человеком и машиночитаемость делают его де-факто стандартом современной разработки.
Правила синтаксиса JSON
Типы данных
- Строка: в двойных кавычках, например "hello"
- Число: целое или с плавающей точкой, например 42, 3.14
- Логическое: true или false
- Null: null
- Массив: в квадратных скобках, например [1, 2, 3]
- Объект: в фигурных скобках, пары ключ-значение, например {"name": "Tom"}
- Вложенность: объекты и массивы могут вкладываться друг в друга
Основные правила
- Ключи должны быть в двойных кавычках (не в одинарных)
- Строки должны быть в двойных кавычках
- Не должно быть завершающей запятой (после последнего элемента запятая недопустима)
- Не должно быть комментариев
- Верхний уровень может быть только объектом или массивом
Три задачи форматирования
Проверка
Проверяет, корректен ли синтаксис JSON. Отсутствующая запятая, лишняя запятая или незакрытые кавычки приводят к ошибке разбора.
Красивый вывод (Pretty Print)
Разворачивает сжатый в одну строку JSON в многострочный формат с отступами, удобный для чтения.
Сжатый вид:
{"name":"Tom","age":20,"tags":["a","b"]}
Красивый вывод:
{
"name": "Tom",
"age": 20,
"tags": ["a", "b"]
}
Сжатие (Minify)
Удаляет все пробелы и переносы строк из красивого формата, сжимая в одну строку для уменьшения размера. Используется при передаче и хранении.
Частые ошибки JSON
Ошибки с кавычками
- Использованы одинарные кавычки: JSON допускает только двойные
- Забыли закрыть кавычки
- Имя ключа без кавычек
Неправильно: {'name': 'Tom'} (одинарные кавычки) Правильно: {"name": "Tom"}
Ошибки с запятыми
- Завершающая запятая: запятая после последнего элемента
- Пропущенная запятая: забыли запятую между элементами
Неправильно: {"a": 1, "b": 2,} (завершающая запятая) Правильно: {"a": 1, "b": 2}
Ошибки типов данных
- Использован undefined (в JSON нет undefined, используйте null)
- Использованы NaN / Infinity (JSON не поддерживает)
- Функции и объекты Date нельзя сериализовать напрямую
Ошибки экранирования
Специальные символы в строках требуют экранирования:
- Кавычка: "
- Обратная косая черта: \
- Перенос строки: \n
- Табуляция: \t
- Возврат каретки: \r
Неправильно: "He said "hello"" (кавычки не экранированы) Правильно: "He said "hello""
Ошибки кодировки
JSON должен использовать кодировку UTF-8. Иные кодировки могут привести к нечитаемым символам или ошибке разбора.
Вложенность и уровни
Пример вложенности
{
"user": {
"name": "Tom",
"address": {
"city": "Москва",
"zip": "101000"
}
},
"orders": [
{"id": 1, "items": ["A", "B"]},
{"id": 2, "items": ["C"]}
]
}
Отступы
- Отступ в 2 пробела: самый частый
- Отступ в 4 пробела: более просторный
- Отступ табуляцией: используют некоторые команды
При красивом выводе унифицируйте стиль отступов.
Глубокая вложенность
Более 5 уровней вложенности затрудняют чтение. Подумайте об уплощении структуры или её разделении.
JSON и другие форматы
JSON vs JSONL
- JSON: один JSON на весь файл (обычно объект или массив)
- JSONL (JSON Lines): по одному независимому JSON на строку, подходит для логов и потоковых данных
JSON vs JSON5
JSON5 — надмножество JSON, поддерживает:
- Одинарные кавычки
- Завершающие запятые
- Комментарии
- Шестнадцатеричные числа
Но JSON5 не является стандартным JSON, совместимость парсеров ограничена.
JSON vs YAML
- JSON: строгий синтаксис, дружелюбен к машинам
- YAML: гибкий синтаксис (поддерживает комментарии, отступы обозначают иерархию), дружелюбен к людям
- Файлы конфигурации часто используют YAML; передача в API — JSON
JSON vs XML
- JSON: лёгкий, без накладных расходов на теги
- XML: многословные теги, но поддерживает атрибуты и пространства имён
- В современной разработке JSON практически вытеснил XML
Практические советы
Копирование JSON
Скопируйте JSON из ответа API или логов и вставьте в инструмент форматирования для красивого вывода и удобства чтения.
Отладка JSON
Если интерфейс возвращает ошибку, отформатируйте JSON ответа и проверьте корректность полей.
Файлы конфигурации
Пишите файлы конфигурации в JSON, а после форматирования комментируйте значение каждого поля (учтите, что стандартный JSON не поддерживает комментарии; используйте JSONC или отдельную документацию).
Преобразование данных
В сценариях вроде CSV в JSON, XML в JSON и т. п. после преобразования отформатируйте и проверьте результат.
Используйте инструмент CSV в JSON, чтобы преобразовать табличные данные в JSON одним щелчком.
Использование инструмента форматирования
Проверка
Вставьте JSON; инструмент проверит синтаксис. При ошибке он укажет позицию и причину.
Красивый вывод
Вставьте сжатый JSON, выберите отступ, нажмите «красивый вывод» и получите многострочный формат.
Сжатие
Вставьте красивый JSON, нажмите «сжать» и получите одну строку.
Экранирование
Экранирует специальные символы в строках JSON или выполняет обратное преобразование.
Обработка JSON с помощью DocsAll
JSON связан с кодированием и преобразованием; используйте соответствующие инструменты:
- Инструмент кодирования/декодирования: обрабатывает экранирование строк JSON
- Инструмент CSV в JSON: преобразует таблицы в JSON
Обработка в браузере, данные не отправляются на сервер.
Часто задаваемые вопросы
После форматирования не-ASCII символы превращаются в \uXXXX
Некоторые инструменты по умолчанию экранируют не-ASCII символы. Чтобы отображать оригинальные символы, отключите опцию Unicode-экранирования.
Большой JSON тормозит
Очень большой JSON (несколько МБ) может зависать при форматировании. Используйте консольные инструменты (например, jq) — это эффективнее.
А как быть с комментариями?
Стандартный JSON не поддерживает комментарии. Если нужны комментарии, используйте JSONC, JSON5 или YAML.
Итоги
Форматирование JSON сводится к трём главным вещам: проверка синтаксиса, красивый вывод для чтения и сжатие для передачи. Самые частые ошибки — с кавычками, запятыми и экранированием. Для обработки JSON используйте инструмент кодирования/декодирования DocsAll и инструмент CSV в JSON — они работают в браузере, данные не уходят наружу.