📋
← Назад к руководствам

Что такое JSON? Полное руководство для начинающих

· Теги: json, what-is-json, json-syntax, json-data-types, web-development

Что такое 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:

  1. Языковая повсеместность — каждый основной язык имеет нативный или хорошо поддерживаемый JSON-парсер, устраняя трения при интеграции.
  2. Нативная поддержка браузеровJSON.parse() и JSON.stringify() в JavaScript делают JSON естественным выбором для веб-приложений.
  3. Минимальная пропускная способность — лёгкий синтаксис JSON создаёт меньшие полезные нагрузки, чем XML, снижая задержку и затраты на пропускную способность.
  4. Читаемость человеком — разработчики могут проверять, отлаживать и писать данные JSON вручную без специальных инструментов.
  5. Гибкая схема — в отличие от жёстких форматов, таких как 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

Валидация обычно следует этим шагам:

  1. Распарсите строку JSON с помощью стандартного парсера, такого как JSON.parse() в JavaScript или эквивалента в вашем языке.
  2. Проверьте на синтаксические ошибки — парсер выбросит ошибку при первом нарушении с сообщением, указывающим местоположение проблемы.
  3. Исправляйте ошибки итеративно — поскольку парсеры останавливаются на первой ошибке, исправьте её и проверьте заново, пока документ не пройдёт проверку.

Большинство онлайн-инструментов JSON объединяют валидацию с форматированием. Вставьте ваш JSON, и инструмент мгновенно проверит синтаксис, выделит ошибки с номерами строк и столбцов и создаст чистый вывод с отступами. Это значительно быстрее, чем отладка с исключениями парсера в вашем коде.

Советы по работе с JSON

  • Всегда проверяйте перед использованием — никогда не предполагайте, что написанный вручную JSON корректен.
  • Используйте линтер — инструменты, такие как ESLint с JSON-плагинами, обнаруживают ошибки до того, как они попадут в продакшен.
  • Предпочитайте JSON-библиотеки — генерируйте JSON с помощью библиотек сериализации, а не конкатенации строк, чтобы избежать тонких синтаксических ошибок.
  • Устанавливайте строгие заголовки Content-Type — для API требуйте Content-Type: application/json, чтобы отклонять некорректные запросы на раннем этапе.

Используйте бесплатный онлайн JSON валидатор и форматтер, чтобы мгновенно проверить синтаксис JSON, найти ошибки и отформатировать данные для читаемости. Независимо от того, являетесь ли вы новичком, изучающим основы, или опытным разработчиком, отлаживающим продакшен-API, наш инструмент JSON Formatter & Validator помогает вам эффективно работать с данными JSON.