Что такое JSON? Полное руководство для начинающих
Что такое JSON?
JSON (JavaScript Object Notation) — это лёгкий текстовый формат обмена данными, разработанный так, чтобы быть лёгким для чтения и написания человеком и лёгким для парсинга и генерации машинами. Изначально он был основан на синтаксисе объектных литералов JavaScript, но с тех пор стал независимым от языка стандартом, поддерживаемым практически всеми языками программирования.
Сегодня JSON является доминирующим форматом для обмена данными в Интернете. Он лежит в основе REST API, файлов конфигурации, NoSQL-баз данных, коммуникации мобильных приложений и множества других систем, управляемых данными. Его простота и повсеместность сделали его выбором по умолчанию для разработчиков по всему миру.
Правила синтаксиса JSON
JSON следует строгому и минимальному набору синтаксических правил:
- Данные структурированы в виде пар ключ/значение
- Все ключи должны быть строками в двойных кавычках (одинарные кавычки не допускаются)
- Пары ключ/значение разделяются двоеточием (
:) - Пары разделяются запятыми (
,) - Фигурные скобки
{}заключают объекты - Квадратные скобки
[]заключают массивы - Висячие запятые не допускаются
- Комментарии не допускаются в строгом JSON
Пример корректного JSON
{
"name": "Jane Smith",
"age": 28,
"isEmployed": true,
"skills": ["JavaScript", "Python", "SQL"],
"address": {
"street": "123 Main Street",
"city": "San Francisco",
"zipCode": "94102"
},
"phoneNumbers": null
}
Примеры некорректного JSON
Висячая запятая (некорректно):
{
"name": "Jane",
"age": 28,
}
Ключ в одинарных кавычках (некорректно):
{ 'name': 'Jane' }
Отсутствуют кавычки у ключа (некорректно):
{ name: "Jane" }
Типы данных JSON
JSON поддерживает ровно шесть типов данных:
| Тип | Описание | Пример |
|------|-------------|---------|
| String | Текст в двойных кавычках Unicode | "Hello, world!" |
| Number | Целое или с плавающей точкой | 42, 3.14, -7, 1.5e10 |
| Boolean | Логическое true или false | true, false |
| Null | Намеренное пустое значение | null |
| Object | Неупорядоченная коллекция ключ/значение | {"key": "value"} |
| Array | Упорядоченный список значений | [1, 2, 3] |
Примечательно отсутствуют: даты, временные метки, бинарные данные, undefined и функции не имеют нативного представления в JSON. Даты обычно хранятся в виде строк ISO 8601 по соглашению.
JSON в сравнении с другими форматами данных
JSON соседствует с несколькими другими форматами обмена данными, каждый со своими компромиссами:
- JSON vs XML: JSON более лаконичен и быстрее парсится. XML поддерживает атрибуты, пространства имён и схемы (XSD), но значительно более многословен.
- JSON vs YAML: YAML более удобочитаем для файлов конфигурации с поддержкой комментариев, но его чувствительный к отступам синтаксис может быть подвержен ошибкам. JSON более портативен и имеет более строгую валидацию.
- JSON vs CSV: CSV плоский и только табличный. JSON поддерживает вложенные иерархии и смешанные типы данных.
- JSON vs Protocol Buffers: Protobuf меньше и быстрее для межмашинной коммуникации, но требует определения схемы и не читается человеком.
Почему JSON доминирует в веб-API
Несколько факторов объясняют доминирование JSON в дизайне веб-API:
- Языковая повсеместность — каждый основной язык имеет нативный или хорошо поддерживаемый JSON-парсер, устраняя трения при интеграции.
- Нативная поддержка браузеров —
JSON.parse()иJSON.stringify()в JavaScript делают JSON естественным выбором для веб-приложений. - Минимальная пропускная способность — лёгкий синтаксис JSON создаёт меньшие полезные нагрузки, чем XML, снижая задержку и затраты на пропускную способность.
- Читаемость человеком — разработчики могут проверять, отлаживать и писать данные JSON вручную без специальных инструментов.
- Гибкая схема — в отличие от жёстких форматов, таких как XML Schema или Protocol Buffers, JSON приспосабливается к изменяющимся структурам данных без перекомпиляции.
Распространённые случаи использования JSON
- REST и GraphQL API — стандартный формат для полезных нагрузок запросов и ответов.
- Файлы конфигурации — используются инструментами, такими как ESLint, Prettier, webpack и VS Code.
- NoSQL-базы данных — MongoDB и CouchDB хранят данные в виде JSON-подобных документов.
- Сериализация данных — структурирование данных для хранения, передачи или кэширования.
- Коммуникация в реальном времени — JSON-сообщения в потоках WebSocket и Webhooks.
- Агрегация логов — инструменты структурированного логирования, такие как Winston, Logstash и Datadog, используют JSON для поисковых, фильтруемых записей логов.
Валидация и форматирование JSON
При работе с JSON валидация критически важна. Одна синтаксическая ошибка — висячая запятая, пропущенная кавычка или неэкранированный символ — может сломать целую интеграцию API или файл конфигурации. Ручная проверка ненадёжна, особенно для больших документов JSON.
Как проверить JSON
Валидация обычно следует этим шагам:
- Распарсите строку JSON с помощью стандартного парсера, такого как
JSON.parse()в JavaScript или эквивалента в вашем языке. - Проверьте на синтаксические ошибки — парсер выбросит ошибку при первом нарушении с сообщением, указывающим местоположение проблемы.
- Исправляйте ошибки итеративно — поскольку парсеры останавливаются на первой ошибке, исправьте её и проверьте заново, пока документ не пройдёт проверку.
Большинство онлайн-инструментов JSON объединяют валидацию с форматированием. Вставьте ваш JSON, и инструмент мгновенно проверит синтаксис, выделит ошибки с номерами строк и столбцов и создаст чистый вывод с отступами. Это значительно быстрее, чем отладка с исключениями парсера в вашем коде.
Советы по работе с JSON
- Всегда проверяйте перед использованием — никогда не предполагайте, что написанный вручную JSON корректен.
- Используйте линтер — инструменты, такие как ESLint с JSON-плагинами, обнаруживают ошибки до того, как они попадут в продакшен.
- Предпочитайте JSON-библиотеки — генерируйте JSON с помощью библиотек сериализации, а не конкатенации строк, чтобы избежать тонких синтаксических ошибок.
- Устанавливайте строгие заголовки Content-Type — для API требуйте
Content-Type: application/json, чтобы отклонять некорректные запросы на раннем этапе.
Используйте бесплатный онлайн JSON валидатор и форматтер, чтобы мгновенно проверить синтаксис JSON, найти ошибки и отформатировать данные для читаемости. Независимо от того, являетесь ли вы новичком, изучающим основы, или опытным разработчиком, отлаживающим продакшен-API, наш инструмент JSON Formatter & Validator помогает вам эффективно работать с данными JSON.