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

RFC 4627

RFC 4627 — это информационный документ (Request for Comments) инженерного совета Интернета (IETF), опубликованный в июле 2006 года. Он вводил спецификацию формата обмена данными JSON (JavaScript Object Notation). Документ официально закреплял структуру JSON как текстового формата, основанного на подмножестве синтаксиса языка JavaScript, и определял его использование для представления простых структур данных.

История

Потребность в стандартизации JSON возникла из-за его растущей популярности как альтернативы XML. К середине 2000-х годов JSON уже активно применялся в веб-приложениях для асинхронного обмена данными между сервером и клиентом, в первую очередь в технологии Ajax (Asynchronous JavaScript and XML). Разработчик JSON, Дуглас Крокфорд, в 2002—2005 годах продвигал его как более лёгкий и читаемый формат по сравнению с XML, но отсутствие официального стандарта сдерживало его принятие.

RFC 4627 был написан Дугласом Крокфордом и опубликован IETF. Стандарт устранил неоднозначности в интерпретации JSON, возникшие из-за его неформального описания. После публикации RFC 4627 JSON получил официальное признание, что ускорило его внедрение в языки программирования и базы данных.

В марте 2014 года RFC 4627 был заменён стандартом RFC 7159, который ввёл несколько уточнений, в том числе разрешил использование экранированных символов в строках и более строго определил числовые значения. В 2017 году JSON был стандартизирован как ECMA-404 и затем как ISO/IEC 21778:2017.

Структура и типы данных

RFC 4627 определял JSON как текстовый формат для сериализации структурированных данных, основанный на двух структурах: объект (неупорядоченный набор пар «ключ: значение») и массив (упорядоченный список значений).

Спецификация ограничивала JSON четырьмя примитивными типами данных:

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

Пример структуры (по спецификации RFC 4627)

``json { "имя": "Иван", "возраст": 30, "хобби": ["чтение", "бег"], "супруга": null } ``

RFC 4627 также вводил понятие «документа JSON» — корневого объекта или массива. Любой допустимый JSON-текст должен был представлять собой либо один объект в фигурных скобках ({}), либо один массив в квадратных скобках ([]). Это исключало, например, передачу одного числа или строки как самостоятельного документа.

MIME-тип

RFC 4627 устанавливал для JSON интернет-медиатип application/json. Это стало стандартом для Content-Type в HTTP-ответах и запросах, передающих данные в формате JSON. Также документ рекомендовал использование кодировки UTF-8 как основной, но допускал UTF-16 и UTF-32 при указании BOM (Byte Order Mark) или явным согласованием сторон.

Критика и недостатки RFC 4627

Несмотря на то что RFC 4627 сыграл ключевую роль в стандартизации JSON, он содержал ряд ограничений и неоднозначностей, которые вызвали критику со стороны разработчиков:

Эти проблемы были частично решены в более поздних версиях стандарта, особенно в RFC 7159 и ECMA-404.

Применение

После стандартизации RFC 4627 JSON стал основным форматом для обмена данными в современных веб-приложениях и мобильных приложениях. Он используется в RESTful API, в конфигурационных файлах (например, в composer.json для PHP, package.json для Node.js), в базах данных NoSQL (MongoDB, CouchDB) и как формат для хранения сериализованных объектов в памяти. В России JSON активно применяется в серверной разработке, в микросервисной архитектуре, а также в государственных информационных системах, таких как портал «Госуслуги» и «Банк данных исполнительных производств» ФССП.

Источники

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →