Открыть сервисСервис

Формат обмена данными JSON

JSON (аббревиатура от англ. JavaScript Object Notation, произносится «дже́йсон») — лёгкий формат обмена данными, основанный на подмножестве синтаксиса языка программирования JavaScript. Представляет собой текстовый формат данных, используемый для хранения и передачи структурированной информации между клиентом и сервером, а также для конфигурационных файлов и обмена данными между программами. JSON является открытым стандартом (RFC 8259) и поддерживается практически всеми современными языками программирования.

История

Формат был разработан в 2001 году американским программистом Дугласом Крокфордом. Целью стало создание простого и компактного способа описания структурированных данных, альтернативного более тяжёлым форматам, таким как XML. В 2006 году формат был стандартизирован в виде спецификации ECMA-404, а в 2013 году принят в качестве международного стандарта ISO/IEC 21546. Действующий стандарт RFC 8259 опубликован в 2017 году.

Формат быстро получил распространение благодаря простоте и того факта, что его синтаксис естественным образом соответствует структурам данных большинства языков программирования. В начале 2000-х годов JSON стал основным форматом обмена данными в веб-разработке, вытеснив в этой роли XML во многих сценариях.

Синтаксис

JSON построен на двух структурах:

  • Объект — набор пар «ключ: значение», заключённый в фигурные скобки {}. Ключи — строки в двойных кавычках, значения — любые допустимые JSON-значения. Пары разделяются запятыми.
  • Массив — упорядоченный список значений в квадратных скобках [], разделённых запятыми.

Объекты и массивы могут быть вложенными друг в друга без ограничений на глубину.

Допустимые типы значений:

ТипПример
Строка"привет", "2024-01-01"
Число42, -3.14, 1e10
Логическое значениеtrue, false
nullnull
Объект{"имя": "Иван"}
Массив[1, 2, 3]

Пример JSON-документа:

``json { "название": "JSON", "год": 2001, "автор": "Дуглас Крокфорд", "поддержка": true, "расширения": [".json"], "лицензия": null } ``

В отличие от JavaScript, формат JSON не поддерживает комментарии, одноапострофные строки, trailing commas (запятую после последнего элемента) и некоторые конструкции языка, такие как функции и выражения.

Применение

Основная область применения JSON — обмен данными в веб-приложениях. Клиентская часть приложения (браузер) запрашивает данные у сервера, чаще всего по протоколу HTTP, и получает ответ в формате JSON. Такой подход лёг в основу архитектуры REST API, ставшей стандартом проектирования веб-сервисов.

Помимо веб-разработки, JSON используется:

  • в конфигурационных файлах (например, package.json в экосистеме Node.js, настройки редакторов Visual Studio Code, Sublime Text);
  • в базах данных (MongoDB, CouchDB хранят документы в формате, основанном на JSON — BSON);
  • в логировании и формате событий (например, NDJSON — newline-delimited JSON для потоковой передачи);
  • в API операционных систем и приложений (Windows, macOS, Android предоставляют программные интерфейсы на основе JSON);
  • для сериализации данных при хранении в файлах.

Альтернативы и сравнение

Главным конкурентом JSON на протяжении долгого времени был XML. По сравнению с ним JSON проще, компактнее и легче читается человеком, однако не поддерживает схемы данных (XSD), пространства имён и комментарии «из коробки». Для валидации структуры JSON существуют отдельные стандарты — JSON Schema.

Другие форматы, используемые для тех же задач:

  • YAML — более человекочитаемый, с поддержкой комментариев, но с более сложным синтаксисом;
  • TOML — ориентирован на конфигурационные файлы, поддерживает комментарии;
  • BSON — бинарный формат на основе JSON, используемый в MongoDB;
  • MessagePack — компактный бинарный формат с похожей моделью данных.

Ограничения

Формат JSON имеет ряд известных ограничений. Отсутствие формата даты и времени вынуждает использовать строки в ISO 8601. Числа с плавающей точкой могут терять точность при передаче очень больших целых чисел. Нет встроенной поддержки комментариев, что усложняет использование JSON в конфигурационных файлах. Схема данных не встроена в сам формат и требует отдельного стандарта JSON Schema.

Применение в России

В российской IT-отрасли JSON является стандартным форматом обмена данными. Он используется в государственных информационных системах, открытых данных (портал data.gov.ru публикует наборы в формате JSON), в API платёжных систем и банковских сервисов. Формат входит в учебные программы по информатике и программированию.

Источники

  • RFC 8259. The JavaScript Object Notation (JSON) Data Interchange Format
  • ECMA-404: The JSON Data Interchange Standard
  • Дуглас Крокфорд. «JavaScript: The Good Parts»
  • MDN Web Docs — JSON
Заметили ошибку или не согласны с информацией в статье? Напишите нам support@bfometr.ru