Формат обмена данными 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 |
null | null |
| Объект | {"имя": "Иван"} |
| Массив | [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
