stringtranslate.com

JSON

JSON ( JavaScript Object Notation , произносится как / ˈdʒeɪsən / или / ˈdʒeɪˌsɒn / ) открытый стандартный формат файлов и формат обмена данными , который использует понятный человеку текст для хранения и передачи объектов данных, состоящих из пар атрибут-значение и массивов (или других сериализуемых значений ) . Это широко используемый формат данных с разнообразным применением в электронном обмене данными , включая веб-приложения с серверами .

JSON — это независимый от языка формат данных. Он произошел от JavaScript , но многие современные языки программирования включают код для генерации и анализа данных в формате JSON. Имена файлов JSON используют расширение .json.

Первоначально формат JSON был разработан Дугласом Крокфордом в начале 2000-х годов. [1] Он и Чип Морнингстар отправили первое сообщение JSON в апреле 2001 года.

Наименование и произношение

Международный стандарт 2017 года (ECMA-404 и ISO/IEC 21778:2017) определяет, что «JSON» «произносится как / ˈ . s ə n / , как в « Ясоне и аргонавтах » ». [2] [3] В первом (2013) издании ECMA-404 произношение не рассматривалось. [4] В « Справочнике по системному администрированию UNIX и Linux» говорится: « Дуглас Крокфорд , который дал название формату JSON и продвигал его, говорит, что он произносится как имя Джейсон. Но каким-то образом «JAY-sawn» [a] стало более распространенным в техническом сообществе». [5] В 2011 году Крокфорд сказал: «Есть много споров о том, как это произносить, но мне, строго говоря, все равно». [1]

Стандарты

После того, как RFC  4627 был доступен в качестве «информационной» спецификации с 2006 года, JSON был впервые стандартизирован в 2013 году как ECMA -404. [4] RFC  8259, опубликованный в 2017 году, является текущей версией интернет -стандарта STD 90, и он по-прежнему соответствует ECMA-404. [6] В том же году JSON был также стандартизирован как ISO / IEC 21778:2017. [2] Стандарты ECMA и ISO / IEC описывают только разрешенный синтаксис, тогда как RFC охватывает некоторые вопросы безопасности и совместимости. [7]

История

Дуглас Крокфорд в здании Yahoo (2007)

JSON возник из-за необходимости в протоколе сеансовой связи сервера с браузером в режиме реального времени без использования плагинов браузера, таких как Flash или Java- апплеты, которые были основными методами, использовавшимися в начале 2000-х годов. [8]

Crockford первым определил и популяризировал формат JSON. [1] Аббревиатура возникла в State Software, компании, соучредителем которой был Crockford и другие в марте 2001 года. Соучредители договорились о создании системы, которая использовала бы стандартные возможности браузера и предоставляла бы уровень абстракции для веб-разработчиков для создания веб-приложений с сохранением состояния, которые имели бы постоянное дуплексное соединение с веб-сервером, удерживая открытыми два соединения Hypertext Transfer Protocol (HTTP) и перезапуская их до истечения стандартного времени ожидания браузера, если дальнейший обмен данными не производился. Соучредители провели обсуждение за круглым столом и проголосовали за то, называть ли формат данных JSML (JavaScript Markup Language) или JSON (JavaScript Object Notation), а также под каким типом лицензии сделать его доступным. Сайт JSON.org [9] был запущен в 2001 году. В декабре 2005 года Yahoo! начала предлагать некоторые из своих веб-сервисов в формате JSON. [10]

Предшественник библиотек JSON использовался в детском проекте игры по торговле цифровыми активами Cartoon Orbit на сайте Communities.com [ требуется ссылка ] (все соучредители State ранее работали в этой компании) для Cartoon Network [ требуется ссылка ] , который использовал подключаемый модуль на стороне браузера с собственным форматом сообщений для управления элементами DHTML (эта система также принадлежит 3DO [ требуется ссылка ] ). После открытия ранних возможностей Ajax digiGroups, Noosh и другие использовали фреймы для передачи информации в поле зрения браузера пользователя без обновления визуального контекста веб-приложения, реализуя насыщенные веб-приложения в реальном времени, используя только стандартные возможности HTTP, HTML и JavaScript Netscape 4.0.5+ и Internet Explorer 5+. Затем Крокфорд обнаружил, что JavaScript можно использовать в качестве объектно-ориентированного формата сообщений для такой системы. Система была продана Sun Microsystems , Amazon.com и EDS .

JSON был основан на подмножестве языка сценариев JavaScript (в частности, Standard ECMA -262 3rd Edition—December 1999 [11] ) и обычно используется с JavaScript, но это независимый от языка формат данных. Код для анализа и генерации данных JSON легко доступен во многих языках программирования . На веб-сайте JSON перечислены библиотеки JSON по языкам.

В октябре 2013 года Ecma International опубликовала первую редакцию своего стандарта JSON ECMA-404. [4] В том же году RFC  7158 использовал ECMA-404 в качестве ссылки. В 2014 году RFC  7159 стал основным справочником для использования JSON в Интернете, заменив RFC  4627 и RFC  7158 (но сохранив ECMA-262 и ECMA-404 в качестве основных справочников). В ноябре 2017 года ISO/IEC JTC 1/SC 22 опубликовал ISO/IEC 21778:2017 [2] в качестве международного стандарта. 13 декабря 2017 года Internet Engineering Task Force объявила RFC 7159 устаревшим  , опубликовав RFC  8259, который является текущей версией интернет -стандарта STD 90. [12] [13]

Крокфорд добавил пункт в лицензию JSON, гласящий: «Программное обеспечение должно использоваться во благо, а не во зло», чтобы открыть исходный код библиотек JSON, высмеивая корпоративных юристов и тех, кто слишком педантичен. С другой стороны, этот пункт привел к проблемам совместимости лицензий JSON с другими лицензиями с открытым исходным кодом, поскольку программное обеспечение с открытым исходным кодом и бесплатное программное обеспечение обычно не подразумевают никаких ограничений на цель использования. [14]

Синтаксис

В следующем примере показано возможное представление JSON, описывающее человека.

{ "first_name" : "John" , "last_name" : "Smith" , "is_alive" : true , "age" : 27 , "address" : { "street_address" : "21 2nd Street" , "city" : "New York" , "state" : "NY" , "postal_code" : "10021-3100" }, "phone_numbers" : [ { "type" : "home" , "number" : "212 555-1234" }, { "type" : "office" , "number" : "646 555-4567" } ], "children" : [ "Catherine" , "Thomas" , "Trevor" ], "spouse" : null }                                          

Кодировка символов

Хотя изначально Крокфорд утверждал, что JSON является строгим подмножеством JavaScript и ECMAScript , [15] его спецификация фактически допускает допустимые документы JSON, которые не являются допустимыми JavaScript; JSON допускает, чтобы символы конца строки Unicode U+2028 LINE SEPARATOR и U+2029 PARAGRAPH SEPARATOR отображались неэкранированными в строках в кавычках, в то время как ECMAScript 2018 и более ранние версии этого не делают. [16] [17] Это следствие того, что JSON запрещает только «управляющие символы». Для максимальной переносимости эти символы должны быть экранированы обратной косой чертой.

Обмен JSON в открытой экосистеме должен быть закодирован в UTF-8 . [6] Кодировка поддерживает полный набор символов Unicode, включая символы за пределами базовой многоязыковой плоскости (от U+0000 до U+FFFF). Однако, если экранированы, эти символы должны быть записаны с использованием суррогатных пар UTF-16 . Например, чтобы включить символ эмодзи U+1F610 😐 НЕЙТРАЛЬНОЕ ЛИЦО в JSON:

{ "лицо" : "😐" } // или { "лицо" : "\uD83D\uDE10" }      

JSON стал строгим подмножеством ECMAScript с момента пересмотра языка в 2019 году. [17] [18]

Типы данных

Основные типы данных JSON:

Пробелы разрешены и игнорируются вокруг или между синтаксическими элементами (значениями и знаками препинания, но не внутри строкового значения). Четыре определенных символа считаются пробелами для этой цели: пробел , горизонтальная табуляция , перевод строки и возврат каретки . В частности, метка порядка байтов не должна генерироваться соответствующей реализацией (хотя она может быть принята при разборе JSON). JSON не предоставляет синтаксис для комментариев . [21]

Ранние версии JSON (например, указанные в RFC  4627) требовали, чтобы допустимый текст JSON состоял только из объекта или типа массива, которые могли содержать другие типы внутри себя. Это ограничение было снято в RFC  7158, где текст JSON был переопределен как любое сериализованное значение.

Числа в JSON не зависят от их представления в языках программирования. Хотя это позволяет сериализовать числа произвольной точности42 , это может привести к проблемам переносимости. Например, поскольку не делается различий между целыми и плавающими значениями, некоторые реализации могут рассматривать , 42.0и 4.2E+1как одно и то же число, в то время как другие — нет. Стандарт JSON не предъявляет требований к деталям реализации, таким как переполнение , подзарядка , потеря точности, округление или нули со знаком , но рекомендует ожидать не более точности IEEE 754 binary64 для «хорошей совместимости». Нет никакой неотъемлемой потери точности при сериализации двоичного представления числа с плавающей точкой на уровне машины (например, binary64) в понятное человеку десятичное представление (например, числа в JSON) и обратно, поскольку существуют опубликованные алгоритмы, позволяющие сделать это точно и оптимально. [22]

Комментарии были намеренно исключены из JSON. В 2012 году Дуглас Крокфорд описал свое решение по дизайну следующим образом: «Я удалил комментарии из JSON, потому что увидел, что люди используют их для хранения директив синтаксического анализа, практика, которая разрушила бы взаимодействие». [21]

JSON запрещает «завершающие запятые», запятую после последнего значения внутри структуры данных. [23] Завершающие запятые являются общей чертой производных JSON для повышения удобства использования. [24]

Взаимодействие

RFC  8259 описывает некоторые аспекты синтаксиса JSON, которые, хотя и являются допустимыми согласно спецификациям, могут вызывать проблемы с совместимостью.

В 2015 году IETF опубликовала RFC  7493, описывающий «Формат сообщения I-JSON» — ограниченный профиль JSON, который ограничивает синтаксис и обработку JSON, чтобы по возможности избежать этих проблем взаимодействия.

Семантика

Хотя JSON предоставляет синтаксическую структуру для обмена данными, однозначный обмен данными также требует соглашения между производителем и потребителем о семантике конкретного использования синтаксиса JSON. [25] Одним из примеров, когда такое соглашение необходимо, является сериализация типов данных, которые не являются частью стандарта JSON, например, даты и регулярные выражения .

Метаданные и схема

Официальный тип MIME для текста JSON — application/json, [26] и большинство современных реализаций приняли его. Устаревшие типы MIME включают text/json, text/x-json, и text/javascript. [27]

JSON Schema определяет формат на основе JSON для определения структуры данных JSON для проверки, документирования и управления взаимодействием. Он предоставляет контракт для данных JSON, требуемых данным приложением, и того, как эти данные могут быть изменены. [28] JSON Schema основана на концепциях из XML Schema (XSD), но основана на JSON. Как и в XSD, одни и те же инструменты сериализации/десериализации могут использоваться как для схемы, так и для данных, и она самоописываемая. Она указана в интернет-проекте в IETF, причем последняя версия по состоянию на 2024 год — «Проект 2020-12». [29] Существует несколько валидаторов, доступных для разных языков программирования, [30] каждый из которых имеет разные уровни соответствия. Стандартное расширение имени файла — .json. [31]

Стандарт JSON не поддерживает ссылки на объекты , но существует проект стандарта IETF для ссылок на объекты на основе JSON. [32]

Использует

JSON-RPC — это протокол удаленного вызова процедур (RPC), созданный на основе JSON, как замена XML-RPC или SOAP . Это простой протокол, который определяет лишь несколько типов данных и команд. JSON-RPC позволяет системе отправлять уведомления (информацию на сервер, которая не требует ответа) и несколько вызовов на сервер, на которые можно отвечать вне очереди.

Асинхронный JavaScript и JSON (или AJAJ) относится к той же динамической методологии веб-страниц, что и Ajax , но вместо XML форматом данных является JSON. AJAJ — это метод веб-разработки, который обеспечивает возможность веб -страницы запрашивать новые данные после ее загрузки в веб-браузер . Как правило, он отображает новые данные с сервера в ответ на действия пользователя на этой веб-странице. Например, то, что пользователь вводит в поле поиска , клиентский код затем отправляет на сервер, который немедленно отвечает раскрывающимся списком соответствующих элементов базы данных .

JSON использовался ad hoc в качестве языка конфигурации . Однако он не поддерживает комментарии . В 2012 году Дуглас Крокфорд, создатель JSON, сказал следующее о комментариях в JSON при использовании в качестве языка конфигурации: «Я знаю, что отсутствие комментариев огорчает некоторых людей, но это не так. Предположим, вы используете JSON для хранения файлов конфигурации, которые вы хотели бы аннотировать. Продолжайте и вставляйте все комментарии, которые вам нужны. Затем передайте их через JSMin [33] перед передачей вашему парсеру JSON». [21]

MongoDB использует данные в формате JSON для своей документоориентированной базы данных .

Некоторые реляционные базы данных, такие как PostgreSQL и MySQL, добавили поддержку собственных типов данных JSON. Это позволяет разработчикам хранить данные JSON непосредственно в реляционной базе данных без необходимости конвертировать их в другой формат данных.

Безопасность

JSON, являющийся подмножеством JavaScript, может привести к неправильному представлению о том, что безопасно передавать тексты JSON в eval()функцию JavaScript. Это небезопасно, поскольку некоторые допустимые тексты JSON, в частности те, которые содержат U+2028 LINE SEPARATOR или U+2029 PARAGRAPH SEPARATOR , не были допустимым кодом JavaScript до тех пор, пока спецификации JavaScript не были обновлены в 2019 году, и поэтому старые движки могут не поддерживать его. [34] Чтобы избежать множества ловушек, вызванных выполнением произвольного кода из Интернета, в пятое издание ECMAScript была впервые добавлена ​​новая функция, [35] , которая с 2017 года поддерживается всеми основными браузерами. Для неподдерживаемых браузеров Дуглас Крокфорд предоставляет совместимую с API библиотеку JavaScript . [36] Кроме того, предложение TC39 «Подчинить JSON» сделало ECMAScript строгим надмножеством JSON с версии языка 2019 года. [17] [18] Различные реализации парсера JSON пострадали от атак типа «отказ в обслуживании» и уязвимости массового назначения . [37] [38] JSON.parse()

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

JSON продвигается как малозатратная альтернатива XML, поскольку оба эти формата имеют широкую поддержку для создания, чтения и декодирования в реальных ситуациях, где они обычно используются. [39] Помимо XML, примерами могут служить CSV и надмножества JSON. Google Protocol Buffers может выполнять эту роль, хотя это не язык обмена данными. CBOR имеет надмножество типов данных JSON, но он не основан на тексте. Ion также является надмножеством JSON с более широким диапазоном основных типов, аннотаций, комментариев и допускает замыкающие запятые. [40]

XML

XML использовался для описания структурированных данных и сериализации объектов. Существуют различные протоколы на основе XML для представления тех же типов структур данных, что и JSON, для тех же целей обмена данными. Данные могут быть закодированы в XML несколькими способами. Самая расширенная форма с использованием пар тегов приводит к гораздо большему (по количеству символов) представлению, чем JSON, но если данные хранятся в атрибутах и ​​форме «короткого тега», где закрывающий тег заменен на />, представление часто имеет примерно такой же размер, как JSON, или немного больше. Однако атрибут XML может иметь только одно значение, и каждый атрибут может появляться не более одного раза в каждом элементе.

XML разделяет «данные» и «метаданные» (посредством использования элементов и атрибутов), тогда как JSON не имеет такой концепции.

Другим ключевым отличием является адресация значений. JSON имеет объекты с простым отображением "ключа" в "значение", тогда как в XML адресация происходит на "узлах", которые все получают уникальный идентификатор через процессор XML. Кроме того, стандарт XML определяет общий атрибут xml:id, который может использоваться пользователем для явной установки идентификатора.

Имена тегов XML не могут содержать ни один из символов !"#$%&'()*+,/;<=>?@[\]^`{|}~, ни пробел, и не могут начинаться с -, .или цифры, тогда как ключи JSON могут (даже если кавычки и обратная косая черта должны быть экранированы). [41]

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

XML поддерживает комментарии, а JSON — нет. [42] [21]

Суперсеты

Поддержка комментариев и других функций была признана полезной, что привело к созданию нескольких нестандартных надмножеств JSON. Среди них HJSON, [43] HOCON и JSON5 (который, несмотря на свое название, не является пятой версией JSON). [44] [45]

ЯМЛ

YAML версии 1.2 является надмножеством JSON; предыдущие версии не были строго совместимы. Например, экранирование слеша /с помощью обратного слеша \допустимо в JSON, но недопустимо в YAML. [46] YAML поддерживает комментарии, а JSON — нет. [46] [44] [21]

CSON

CSON (" CoffeeScript Object Notation ") использует значительные отступы , ключи без кавычек и предполагает внешнее объявление объекта. Он использовался для настройки текстового редактора Atom на GitHub . [47] [48] [49]

Существует также не связанный с этим проект под названием CSON («Cursive Script Object Notation»), который синтаксически более похож на JSON. [50]

HOCON

HOCON («Human-Optimized Config Object Notation») — это формат для данных , удобных для восприятия человеком , и надмножество JSON. [51] HOCON используется в следующих целях:

JSON5

JSON5 («Формат обмена данными JSON5») — это расширение синтаксиса JSON, которое, как и JSON, также является допустимым синтаксисом JavaScript. Спецификация была начата в 2012 году и завершена в 2018 году с версией 1.0.0. [62] Основные отличия от синтаксиса JSON:

Синтаксис JSON5 поддерживается в некотором программном обеспечении как расширение синтаксиса JSON, например в SQLite . [63]

JSONC

JSONC (JSON с комментариями) — это подмножество JSON5, используемое в коде Visual Studio от Microsoft : [64]

Производные

Несколько форматов сериализации были построены на основе спецификации JSON. Примеры включают

Смотрите также

Примечания

Ссылки

  1. ^ abc "Douglas Crockford: The JSON Saga". YouTube. 28 августа 2011 г. Получено 21 февраля 2022 г.Транскрипт: Видеотрансляции транскриптов на Wayback Machine (архив 2019-10-30)
  2. ^ abc "ISO/IEC 21778:2017" . ISO . Получено 29 июля 2019 г. .
  3. ^ "ECMA-404: The JSON Data Interchange Syntax" (2-е изд.). Ecma International . Декабрь 2017 г. стр. iii, сноска. Архивировано (PDF) из оригинала 27 октября 2019 г. Получено 29 апреля 2024 г.
  4. ^ abc "ECMA-404: The JSON Data Interchange Format" (1-е изд.). Ecma International . Октябрь 2013 г. Архивировано (PDF) из оригинала 1 ноября 2013 г. Получено 20 ноября 2023 г.
  5. ^ Немет, Эви; Снайдер, Гарт; Хайн, Трент Р.; Уэйли, Бен; Макин, Дэн (2017). "19: Веб-хостинг". Справочник по системному администрированию UNIX и Linux (5-е изд.). Addison-Wesley Professional. ISBN 9780134278292. Получено 29 октября 2019 г. .
  6. ^ ab Bray, T. (декабрь 2017 г.). Bray, T (ред.). "Формат обмена данными JavaScript Object Notation (JSON)". IETF. doi :10.17487/RFC8259. S2CID  263868313 . Получено 16 февраля 2018 г. . {{cite journal}}: Цитировать журнал требует |journal=( помощь )
  7. ^ Брей, Тим. "JSON Redux AKA RFC7159". Продолжается . Получено 16 марта 2014 г.
  8. ^ "Неофициальная история Java". Edu4Java . 26 мая 2014 г. Архивировано из оригинала 26 мая 2014 г. Получено 30 августа 2019 г. В 1996 году Macromedia запускает технологию Flash, которая занимает место, оставленное Java и ActiveX, становясь фактическим стандартом для анимации на стороне клиента.
  9. ^ "JSON". json.org .
  10. ^ Yahoo!. "Использование JSON с веб-сервисами Yahoo!". Архивировано из оригинала 11 октября 2007 г. Получено 3 июля 2009 г.
  11. ^ Крокфорд, Дуглас (28 мая 2009 г.). «Введение в JSON». json.org . Получено 3 июля 2009 г. Он основан на подмножестве языка программирования JavaScript, стандарта ECMA-262 3-го издания — декабрь 1999 г.
  12. ^ Брей, Тим (декабрь 2017 г.). "История draft-ietf-jsonbis-rfc7159bis-04". IETF Datatracker . Internet Engineering Task Force . Получено 24 октября 2019 г. . 2017-12-13 [...] RFC опубликован
  13. ^ Брей, Тим (13 декабря 2017 г.). "RFC 8259 - Формат обмена данными JavaScript Object Notation (JSON)". IETF Datatracker . Internet Engineering Task Force . Получено 24 октября 2019 г. . Тип: RFC - Internet Standard (декабрь 2017 г.; Errata); Устаревший RFC 7159; Также известен как STD 90
  14. ^ «Apache и лицензия JSON» на LWN.net Джейка Эджа (30 ноября 2016 г.).
  15. Дуглас Крокфорд (10 июля 2016 г.). «JSON в JavaScript». Архивировано из оригинала 10 июля 2016 г. Получено 13 августа 2016 г. JSON — это подмножество объектной литеральной нотации JavaScript.
  16. ^ Холм, Магнус (15 мая 2011 г.). «JSON: подмножество JavaScript, которого нет». Вечный репозиторий. Архивировано из оригинала 13 мая 2012 г. Получено 23 сентября 2016 г.
  17. ^ abc "Subsume JSON: Предложение сделать весь текст JSON допустимым ECMA-262". Ecma TC39. 23 августа 2019 г. Получено 27 августа 2019 г.
  18. ^ ab "Переход на этап 4 - tc39/proposal-json-superset". GitHub . 22 мая 2018 г.
  19. ^ "BigInt - MDN Web doc glossary". Mozilla . Получено 18 октября 2020 г.
  20. ^ ECMA-404, 2-е изд., стр. 3: «Синтаксис JSON не накладывает никаких ограничений на строки, используемые в качестве имен, не требует, чтобы строки имен были уникальными, и не придает никакого значения порядку пар имя/значение».
  21. ^ abcde Crockford, Douglas (30 апреля 2012 г.). "Комментарии в JSON". Архивировано из оригинала 4 июля 2015 г. Получено 30 августа 2019 г. Я удалил комментарии из JSON, потому что увидел, что люди используют их для хранения директив синтаксического анализа, практика, которая могла бы разрушить взаимодействие. Я знаю, что отсутствие комментариев огорчает некоторых людей, но это не должно огорчать. Предположим, вы используете JSON для хранения файлов конфигурации, которые вы хотели бы аннотировать. Продолжайте и вставляйте все комментарии, которые вам нравятся. Затем передайте их через JSMin , прежде чем передать вашему парсеру JSON.
  22. ^ Andrysco, Marc; Jhala, Ranjit; Lerner, Sorin. «Printing Floating-Point Numbers — An Always Correct Method» (PDF) . Получено 27 июля 2019 г.
  23. ^ "Завершающие запятые - JavaScript | MDN". developer.mozilla.org . 12 сентября 2023 г. . Получено 16 декабря 2023 г. .
  24. ^ "JSON5". json5. Архивировано из оригинала 29 ноября 2020 г. Получено 16 декабря 2020 г.
  25. ^ ECMA-404, 2-е изд., стр. iii: «Синтаксис JSON не является спецификацией полного обмена данными. Для осмысленного обмена данными требуется соглашение между производителем и потребителем о семантике, привязанной к конкретному использованию синтаксиса JSON. JSON предоставляет синтаксическую структуру, к которой может быть привязана такая семантика»
  26. ^ "Типы носителей". iana.org . Получено 13 сентября 2015 г. .
  27. ^ «Правильный заголовок Content-Type для JSON». ReqBin . 13 января 2023 г. Получено 23 марта 2024 г.
  28. ^ "JSON Schema и Hyper-Schema". json-schema.org . Получено 8 июня 2021 г. .
  29. ^ "JSON Schema - Спецификации Ссылки". json-schema.org . Получено 22 марта 2024 г. .
  30. ^ "Реализации схемы JSON". json-schema.org . Получено 8 июня 2021 г. .
  31. ^ Брей, Тим (декабрь 2017 г.). Брей, Т. (ред.). "11. IANA Considerations". RFC 8259: Формат обмена данными JavaScript Object Notation (JSON) . IETF . doi :10.17487/RFC8259. S2CID  263868313.
  32. ^ Zyp, Kris (16 сентября 2012 г.). Bryan, Paul C. (ред.). "JSON Reference: draft-pbryan-zyp-json-ref-03". Internet Engineering Task Force .
  33. ^ Крокфорд, Дуглас (16 мая 2019 г.). "JSMin" . Получено 12 августа 2020 г. JSMin [2001] — это инструмент минификации, который удаляет комментарии и ненужные пробелы из файлов JavaScript.
  34. ^ "JSON: подмножество JavaScript, которого нет". Магнус Холм. Архивировано из оригинала 13 мая 2012 г. Получено 16 мая 2011 г.
  35. ^ "ECMA-262: ECMAScript Language Specification" (5-е изд.). Декабрь 2009 г. Архивировано (PDF) из оригинала 14 апреля 2011 г. Получено 18 марта 2011 г.
  36. ^ "douglascrockford/JSON-js". GitHub . 13 августа 2019 г.
  37. ^ "Уязвимость отказа в обслуживании и создания небезопасных объектов в JSON (CVE-2013-0269)" . Получено 5 января 2016 г.
  38. ^ "Уязвимость отказа в обслуживании при обработке контента JSON в Microsoft .NET Framework". Архивировано из оригинала 6 ноября 2018 г. Получено 5 января 2016 г.
  39. ^ "JSON: The Fat-Free Alternative to XML". json.org . Получено 14 марта 2011 г. .
  40. ^ "Amazon Ion". Amazon . Архивировано из оригинала 12 августа 2024 г. Получено 26 августа 2024 г.
  41. ^ "XML 1.1 Specification". World Wide Web Consortium . Получено 26 августа 2019 г.
  42. ^ Saternos, Casimir (2014). Клиент-серверные веб-приложения с Javascript и Java . "O'Reilly Media, Inc.". стр. 45. ISBN 9781449369316.
  43. ^ Эдельман, Джейсон; Лоу, Скотт; Освальт, Мэтт. Сетевое программирование и автоматизация . O'Reilly Media . Для представления данных можно выбрать один из следующих вариантов: YAML, YAMLEX, JSON, JSON5, HJSON или даже чистый Python.
  44. ^ ab McCombs, Thayne (16 июля 2018 г.). «Почему JSON не является хорошим языком конфигурации». Lucid Chart . Получено 15 июня 2019 г.
  45. ^ "HOCON (Human-Optimized Config Object Notation)". GitHub . 28 января 2019 г. . Получено 28 августа 2019 г. Основная цель: сохранить семантику (древовидную структуру; набор типов; кодирование/экранирование) из JSON, но сделать его более удобным в качестве формата файла конфигурации, доступного для редактирования человеком.
  46. ^ ab "YAML Ain't Markup Language (YAML™) Version 1.2". yaml.org . Получено 13 сентября 2015 г. .
  47. ^ Dohm, Lee (2014). "CoffeeScript Object Notation". Большая книга атома . Архивировано из оригинала 22 апреля 2023 г. Получено 29 апреля 2024 г.
  48. ^ "Basic Customization". Atom Flight Manual . GitHub . Архивировано из оригинала 29 апреля 2024 г. Получено 29 апреля 2024 г.
  49. ^ "CSON". Bevry. 20 декабря 2023 г. Архивировано из оригинала 23 апреля 2024 г. Получено 29 апреля 2024 г. – через GitHub .
  50. ^ Seonghoon, Kang (1 июля 2021 г.). "CSON". Архивировано из оригинала 16 декабря 2023 г. Получено 27 февраля 2023 г. – через GitHub .
  51. ^ "config/HOCON.md at master · lightbend/config". GitHub . Получено 5 августа 2021 г. .
  52. ^ "Config File - 2.5.x". www.playframework.com . Получено 5 августа 2021 г. .
  53. ^ Документы Akka.NET HOCON
  54. ^ "Akka.NET Documentation | Akka.NET Documentation". getakka.net . Получено 5 августа 2021 г. .
  55. ^ "Управление файлами конфигурации HOCON с помощью Puppet". Архивировано из оригинала 11 февраля 2017 г. Получено 4 марта 2023 г.
  56. ^ "StreamBase Documentation". docs.streambase.com . Получено 5 августа 2021 г. .
  57. ^ "Руководство по настройке". docs.streambase.com . Получено 5 августа 2021 г. .
  58. ^ "Архив StreamBase New and Noteworthy". docs.streambase.com . Получено 5 августа 2021 г. .
  59. ^ "Exabeam Advanced Analytics Release Notes". Архивировано из оригинала 20 октября 2020 г. Получено 4 марта 2023 г.
  60. ^ Проект JITSI. "Фаза конфигурации 1". GitHub . Получено 16 февраля 2021 г.
  61. ^ Проект JITSI. "reference.conf". GitHub . Получено 16 февраля 2021 г.
  62. ^ "Формат обмена данными JSON5" . Получено 25 июня 2022 г.
  63. ^ SQLite. "Функции и операторы JSON" . Получено 25 июня 2023 г.
  64. ^ "JSON с комментариями - редактирование JSON в Visual Studio Code". Visual Studio Code . Microsoft . Получено 29 апреля 2024 г. .
  65. ^ Батлер, Х.; Дейли, М.; Дойл, А.; Джиллис, Шон; Шауб, Т.; Хаген, Стефан (август 2016 г.). «RFC 7946 — Формат GeoJSON». IETF Datatracker . Получено 17 июня 2022 г.
  66. ^ "GeoJSON". geojson.org . Получено 7 августа 2022 г. .
  67. ^ "JSON-LD 1.1". World Wide Web Consortium . 16 июля 2020 г. Получено 17 июня 2022 г.
  68. ^ "JSON-LD - JSON для связывания данных". json-ld.org . Получено 7 августа 2022 г. .
  69. ^ "JSON-RPC". jsonrpc.org . Получено 17 июня 2022 г. .
  70. ^ "JsonML (язык разметки JSON)". JsonML.org . Получено 17 июня 2022 г. .
  71. McKamey, Stephen (14 июня 2022 г.), JsonML , получено 7 августа 2022 г.
  72. ^ "FasterXML/smile-format-specification: Новый дом для формата Smile". GitHub . Получено 17 июня 2022 г.
  73. ^ Гупта, Аюш (10 февраля 2019 г.). «Понимание улыбки — формат данных на основе JSON». Код с Аюшем . Получено 7 августа 2022 г.
  74. ^ «Спецификация универсального двоичного формата JSON – Спецификация универсально совместимого формата для двоичного формата JSON». ubjson.org . Получено 17 июня 2022 г. .
  75. ^ "UBJSON - JSON для современного C++". json.nlohmann.me . Получено 7 августа 2022 г. .

Внешние ссылки