История форматировщика JSON
Сегодня на JSON говорит большинство веб-API, но его никогда не проектировал комитет. Его скорее заметили, чем изобрели: это небольшое подмножество JavaScript, которого оказалось достаточно для обмена данными между программами.
Формат, который открыли
Около 2001 года Дуглас Крокфорд и его коллеги из State Software искали способ обмена данными между браузером и сервером без плагинов. Они взяли литералы объектов и массивов, которые JavaScript уже понимал, дали идее имя и опубликовали грамматику на json.org. Она настолько коротка, что помещается на обороте визитной карточки.
Почему нет комментариев
Крокфорд рано убрал комментарии из JSON, потому что их начали использовать для указаний парсеру, а это разрушило бы совместимость. Он советовал удалять комментарии минификатором перед разбором. Поэтому форматировщик сообщает о комментарии как о неожиданном символе, и поэтому для файлов конфигурации существуют форматы JSON5 и JSONC.
От веб-страницы к стандарту
Впервые JSON описали в RFC 4627 в 2006 году. Ecma выпустила ECMA-404 в 2013 году, а IETF в 2017 году заменила прежние тексты документом RFC 8259, который требует UTF-8 для JSON, передаваемого между системами. Грамматика почти не изменилась со времён json.org: объекты, массивы, строки, числа, true, false и null.
Числа и пути
Сам JSON не ограничивает числа, но большинство парсеров хранит их как 64-битные числа с плавающей точкой, поэтому целые больше 9007199254740991 могут незаметно потерять точность. Большие идентификаторы поэтому часто передают строками. Чтобы указывать на значение, Стефан Гёсснер в 2007 году предложил JSONPath по образцу XPath, и в 2024 году он стал стандартом RFC 9535. Пути, которые копирует этот форматировщик, используют эту запись со знаком доллара и квадратными скобками.
Часто задаваемые вопросы
Кто изобрёл JSON?
Дуглас Крокфорд описал и популяризировал JSON в начале 2000-х, хотя сам говорит, что открыл его, ведь это уже существовавшее подмножество JavaScript.
Почему JSON не допускает запятые в конце и одинарные кавычки?
Грамматику сделали как можно меньше, чтобы любой язык разбирал её одинаково. Каждое лишнее удобство дало бы ещё один повод для расхождения двух парсеров.
JSON и объект JavaScript это одно и то же?
Нет. JSON это текст. Ключи требуют двойных кавычек, а функции, undefined, комментарии, NaN и Infinity запрещены, хотя JavaScript принимает их в коде.
Готовы попробовать?
Откройте PictorX в своем браузере — установка не требуется, для запуска не требуется кредитная карта.
Открыть форматировщик JSON