JavaScript Object Notation

Формат файлов JSON (.json): полное руководство

Что такое JSON?

JSON (JavaScript Object Notation) — это текстовый формат обмена данными, основанный на синтаксисе объектов JavaScript. Несмотря на своё происхождение, JSON является языконезависимым форматом и широко используется в самых разных технологиях: от веб-приложений до мобильных сервисов и систем хранения данных.

Формат был предложен Дугласом Крокфордом в начале 2000-х годов как более лёгкая и читаемая альтернатива XML. В 2006 году JSON был стандартизирован в RFC 4627, а позднее — в RFC 7159 (2014) и RFC 8259 (2017). Сегодня JSON де-факто является стандартом для передачи данных в веб-разработке и API-интеграциях.

Файлы JSON имеют расширение .json и хранятся в виде обычного текста в кодировке UTF-8, UTF-16 или UTF-32. Благодаря простой структуре и человекочитаемому синтаксису, этот формат быстро завоевал популярность среди разработчиков по всему миру.

Техническая спецификация

JSON — это текстовый формат, не использующий бинарное кодирование или сжатие по умолчанию. Его технические характеристики определяются стандартом ECMA-404 и RFC 8259.

  • Тип данных: текстовый, человекочитаемый формат
  • Кодировка: UTF-8 (рекомендуется), UTF-16, UTF-32
  • Сжатие: встроенное сжатие отсутствует; при передаче по сети часто используется gzip или Brotli на уровне HTTP
  • MIME-тип: application/json
  • Поддерживаемые типы данных: строки (string), числа (number), булевы значения (boolean), массивы (array), объекты (object), null
  • Вложенность: поддерживает произвольно глубокую вложенность структур
  • Комментарии: стандарт JSON не поддерживает комментарии
  • Максимальный размер: теоретически не ограничен; практические ограничения зависят от приложения

Структура JSON строится из двух основных конструкций: объектов (набор пар ключ–значение в фигурных скобках) и массивов (упорядоченный список значений в квадратных скобках). Ключи объектов всегда являются строками в двойных кавычках.

Области применения JSON

Благодаря своей универсальности и простоте, JSON применяется в самых разнообразных сценариях:

  • API и веб-сервисы: подавляющее большинство REST API используют JSON для передачи запросов и ответов между клиентом и сервером
  • Конфигурационные файлы: многие инструменты разработки (например, package.json в Node.js, tsconfig.json, .eslintrc.json) хранят настройки в формате JSON
  • Базы данных: документоориентированные СУБД, такие как MongoDB и CouchDB, используют JSON-подобный формат для хранения документов
  • Обмен данными между микросервисами: в архитектурах на основе микросервисов JSON часто служит универсальным форматом сообщений
  • Логирование и мониторинг: структурированные логи в формате JSON удобно парсить и анализировать с помощью инструментов вроде ELK Stack
  • Хранение пользовательских настроек: приложения сохраняют профили и предпочтения пользователей в JSON-файлах
  • Геопространственные данные: формат GeoJSON основан на JSON и используется для хранения географических объектов

Преимущества и недостатки JSON

Как и любой формат, JSON имеет свои сильные и слабые стороны. В таблице ниже представлено сравнение ключевых характеристик.

Критерий Преимущества Недостатки
Читаемость Легко читается и редактируется человеком При большом объёме данных структура становится громоздкой
Размер файла Компактнее XML за счёт отсутствия закрывающих тегов Крупнее бинарных форматов (MessagePack, BSON, Protocol Buffers)
Поддержка Нативная поддержка в JavaScript; библиотеки есть для всех языков Не поддерживает комментарии, что затрудняет документирование конфигов
Типы данных Достаточный набор для большинства задач Нет встроенной поддержки даты, бинарных данных и специальных числовых значений (Infinity, NaN)
Скорость обработки Быстрый парсинг в современных движках Медленнее бинарных форматов при работе с большими объёмами данных
Совместимость Широко поддерживается во всех платформах и языках Нет поддержки схем данных «из коробки» (требуется JSON Schema)

Чем открыть файл JSON

Поскольку JSON является текстовым форматом, его можно открыть практически любым текстовым редактором. Однако для удобной работы рекомендуется использовать специализированные инструменты с подсветкой синтаксиса и форматированием:

  • Visual Studio Code — бесплатный редактор с встроенной поддержкой JSON, автодополнением и валидацией
  • Notepad++ — популярный текстовый редактор для Windows с плагинами для форматирования JSON
  • Sublime Text — кроссплатформенный редактор с подсветкой синтаксиса JSON
  • JetBrains IDEs (WebStorm, IntelliJ IDEA) — поддерживают JSON со встроенной валидацией по JSON Schema
  • Онлайн-просмотрщики: JSONFormatter, JSONLint — позволяют форматировать и валидировать JSON прямо в браузере
  • Браузеры (Chrome, Firefox) — отображают JSON-файлы с базовой подсветкой структуры
  • Стандартные текстовые редакторы (Блокнот, TextEdit, gedit) — откроют файл, но без форматирования

Как конвертировать JSON-файлы онлайн

Иногда возникает необходимость преобразовать JSON в другой формат — например, в CSV для работы в Excel, в XML для интеграции со старыми системами или в YAML для конфигурационных файлов. В обратном направлении тоже бывает нужно: сконвертировать CSV или XML в JSON для использования в веб-приложении.

Для таких задач удобно использовать онлайн-инструменты. Сервис Metric Converter (metric-converter.com) предлагает бесплатную конвертацию файлов в различные форматы прямо в браузере — без установки программ и без необходимости регистрации. Достаточно загрузить файл, выбрать целевой формат и скачать результат.

При конвертации JSON важно учитывать особенности целевого формата: например, при переводе в CSV вложенные объекты и массивы могут быть «сплющены» или потеряны, так как CSV поддерживает только плоскую таблицу данных.

Часто задаваемые вопросы

В чём разница между JSON и XML?

Оба формата используются для хранения и передачи структурированных данных, однако JSON более компактен и легче читается человеком. XML поддерживает атрибуты, схемы (XSD), пространства имён и комментарии, что делает его мощнее для сложных корпоративных задач. JSON проще в разработке и парсинге, поэтому занял доминирующее положение в веб-API. XML по-прежнему широко используется в SOAP-сервисах, документооборотных системах и конфигурациях Java EE.

Безопасно ли открывать JSON-файлы из недоверенных источников?

Сам по себе JSON-файл является текстовым и не может содержать исполняемый код. Однако если приложение небрежно обрабатывает JSON-данные (например, использует небезопасный eval() в JavaScript), это может создать уязвимости. Также злоумышленники могут замаскировать вредоносный файл под JSON. Рекомендуется открывать JSON-файлы только из доверенных источников и использовать стандартные JSON-парсеры, а не eval().

Почему в JSON нельзя использовать комментарии?

Дуглас Крокфорд намеренно исключил комментарии из спецификации JSON, чтобы предотвратить их использование для директив парсинга — что могло бы нарушить совместимость. Для конфигурационных файлов с поддержкой комментариев существуют расширения: JSONC (JSON with Comments), используемый в VS Code, и JSON5. Также популярен YAML как альтернатива для читаемых конфигов с поддержкой комментариев.

Какой максимальный размер числа поддерживает JSON?

Спецификация JSON не ограничивает точность и размер чисел, однако на практике всё зависит от парсера. JavaScript использует 64-битные числа с плавающей точкой (IEEE 754), что ограничивает безопасный диапазон целых чисел значением 253−1. Большие целые числа (например, идентификаторы социальных сетей) могут терять точность при парсинге в JavaScript. Для таких случаев рекомендуется передавать большие числа в виде строк.