stringtranslate.com

JSON

JSON ( JavaScript Object Notation , произносится / ˈ s ən / ; также / ˈ ˌ 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», похоже, стало более распространенным в техническом сообществе. ." [5] В 2011 году Крокфорд сказал: «Существует много споров о том, как это произносить, но меня это совершенно не волнует». [6]

Стандарты

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

История

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

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

Крокфорд первым определил и популяризировал формат JSON. [11] Аббревиатура возникла в компании State Software, соучредителями которой были Крокфорд и другие в марте 2001 года. Соучредители согласились создать систему, которая использовала бы стандартные возможности браузера и предоставляла веб-разработчикам уровень абстракции для создания веб-приложений с отслеживанием состояния. который имел постоянное дуплексное соединение с веб-сервером, удерживая открытыми два соединения протокола передачи гипертекста (HTTP) и повторно используя их до истечения стандартного времени ожидания браузера, если дальнейший обмен данными не осуществлялся. Соучредители провели круглый стол и проголосовали за то, называть ли формат данных JSML (язык разметки JavaScript) или JSON (нотация объектов JavaScript), а также под каким типом лицензии сделать его доступным. Веб-сайт JSON.org [12] был запущен в 2001 году. В декабре 2005 года Yahoo! начала предлагать некоторые из своих веб-сервисов в формате JSON. [13]

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

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

В октябре 2013 года Ecma International опубликовала первое издание стандарта JSON ECMA-404. [7] В том же году в 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 года Инженерная группа Интернета упразднила RFC  7159, опубликовав RFC  8259, который является текущей версией Интернет-стандарта STD 90. [15] [16]

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

Синтаксис

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

{ "first_name" : "Джон" , "last_name" : "Смит" , "is_alive" : true , "возраст" : 27 , "адрес" : { "street_address" : "21 2nd Street" , "city" : "Новый Йорк" , "штат" : "Нью-Йорк" , "postal_code" : "10021-3100" }, "phone_numbers" : [ { "type" : "home" , "number" : "212 555-1234" }, { " тип" : "офис" , "номер" : "646 555-4567" } ], "дети" : [ "Кэтрин" , "Томас" , "Тревор" ], "супруга" : null }                                          

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

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

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

{ "face" : "😐" } // или { "face" : "\uD83D\uDE10" }      

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

Типы данных

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

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

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

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

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

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

Семантика

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

Совместимость

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

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

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

Официальным типом MIME для текста JSON является " application/json", [30] , и большинство современных реализаций его приняли. Неофициальный тип MIME " " text/jsonили тип контента " text/javascript" также поддерживаются по устаревшим причинам многими поставщиками услуг, браузерами, серверами, веб-приложениями, библиотеками, платформами и API. Яркие примеры включают Google Search API, [31] Yahoo!, [31] [32] Flickr, [31] Facebook API, [33] Lift framework , [34] и Dojo Toolkit 0.4. [35]

Схема JSON определяет формат на основе JSON для определения структуры данных JSON для проверки, документирования и управления взаимодействием. Он предоставляет контракт для данных JSON, необходимых данному приложению, и способы изменения этих данных. [36] Схема JSON основана на концепциях XML-схемы (XSD), но основана на JSON. Как и в XSD, одни и те же инструменты сериализации/десериализации могут использоваться как для схемы, так и для данных, и они самоописываются. Это указано в интернет-проекте IETF, который в настоящее время находится в проекте 2020-12 годов, который был выпущен 28 января 2021 года. [37] Для разных языков программирования доступно несколько валидаторов, [38] каждый из которых имеет разные уровни соответствия. Стандартное расширение имени файла — .json. [39]

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

Использование

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

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

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

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

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

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

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

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

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

XML

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

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

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

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

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

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

Суперсеты

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

ЯМЛ

YAML версии 1.2 представляет собой расширенный набор JSON; предыдущие версии не были строго совместимы. Например, экранирование косой черты /обратной косой чертой \допустимо в JSON, но недопустимо в YAML. [53] YAML поддерживает комментарии, а JSON — нет. [53] [51] [24]

CSON

CSON («нотация объекта рукописного сценария») определяется как крошечные грамматические дополнения к грамматике ABNF JSON , указанной в RFC 4627. Как и YAML, это строгий расширенный набор JSON. В отличие от YAML, любые данные CSON могут быть преобразованы в JSON туда и обратно, поэтому можно продолжать использовать библиотеку, которая понимает только JSON, и вам не нужно переводить существующий JSON. Помимо такой эквивалентности JSON, при проектировании учитывались следующие соображения: [54]

Существуют библиотеки для C, JavaScript, Python и Rust.

ХОКОН

HOCON («Нотация объекта конфигурации, оптимизированная для человека» — это формат удобочитаемых данных и расширенный набор JSON. [55] HOCON используется следующим образом:

JSON5

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

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

JSONC

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

Производные

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

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

Рекомендации

  1. ^ «Дуглас Крокфорд: Сага JSON». YouTube. 28 августа 2011 года . Проверено 21 февраля 2022 г.
  2. ^ abc «ISO/IEC 21778:2017» . ИСО . Проверено 29 июля 2019 г.
  3. ^ «Стандарт ECMA-404 — Синтаксис обмена данными JSON» (PDF) . Экма Интернешнл. Декабрь 2017. с. 1, сноска . Проверено 27 октября 2019 г.
  4. ^ ECMA-404: Формат обмена данными JSON (PDF) (2-е изд.). Женева: ECMA International. Декабрь 2017.
  5. ^ Немет, Эви; Снайдер, Гарт; Хейн, Трент Р.; Уэйли, Бен; Маккин, Дэн (2017). «19: Веб-хостинг». Справочник по системному администрированию UNIX и Linux (5-е изд.). Аддисон-Уэсли Профессионал. ISBN 9780134278292. Проверено 29 октября 2019 г.
  6. ^ «Дуглас Крокфорд: Сага JSON - Видео стенограммы» . сайт транскриптвидс.com . Проверено 29 октября 2019 г.
  7. ^ ab «Формат обмена данными JSON» (PDF) . ЭКМА Интернешнл. Октябрь 2013 . Проверено 20 ноября 2023 г.
  8. ^ Аб Брей, Т. (декабрь 2017 г.). Брей, Т. (ред.). «Формат обмена данными нотации объектов JavaScript (JSON)». IETF. дои : 10.17487/RFC8259. S2CID  263868313 . Проверено 16 февраля 2018 г. {{cite journal}}: Требуется цитировать журнал |journal=( помощь )
  9. ^ Брэй, Тим. «JSON Redux AKA RFC7159». Непрерывный . Проверено 16 марта 2014 г.
  10. ^ «Неофициальная история Java». Эду4Java . 26 мая 2014 года. Архивировано из оригинала 26 мая 2014 года . Проверено 30 августа 2019 г. В 1996 году Macromedia запускает технологию Flash, которая занимает место, оставленное Java и ActiveX, и становится фактическим стандартом анимации на стороне клиента.
  11. ^ «Дуглас Крокфорд — Сага о JSON». YouTube. 28 августа 2011 года . Проверено 23 сентября 2016 г.
  12. ^ "JSON". json.org .
  13. ^ Yahoo!. «Использование JSON с веб-сервисами Yahoo!». Архивировано из оригинала 11 октября 2007 года . Проверено 3 июля 2009 г.
  14. Крокфорд, Дуглас (28 мая 2009 г.). «Знакомство с JSON». json.org . Проверено 3 июля 2009 г. Он основан на подмножестве языка программирования JavaScript, стандарт ECMA-262, 3-е издание — декабрь 1999 г.
  15. ^ Брэй, Тим (декабрь 2017 г.). «История Draft-ietf-jsonbis-rfc7159bis-04». Трекер данных IETF . Рабочая группа по интернет-инжинирингу . Проверено 24 октября 2019 г. 13 декабря 2017 г. [...] RFC опубликован.
  16. Брэй, Тим (13 декабря 2017 г.). «RFC 8259 — Формат обмена данными нотации объектов JavaScript (JSON)». Трекер данных IETF . Рабочая группа по интернет-инжинирингу . Проверено 24 октября 2019 г. Тип: RFC — Интернет-стандарт (декабрь 2017 г.; исправления); Устаревший RFC 7159; Также известен как STD 90.
  17. ^ «Apache и лицензия JSON» на LWN.net Джейка Эджа (30 ноября 2016 г.).
  18. Дуглас Крокфорд (10 июля 2016 г.). «JSON в JavaScript». Архивировано из оригинала 10 июля 2016 года . Проверено 13 августа 2016 г. JSON — это подмножество объектной литеральной записи JavaScript.
  19. Холм, Магнус (15 мая 2011 г.). «JSON: подмножество JavaScript, которого нет». Вечный репозиторий. Архивировано из оригинала 13 мая 2012 года . Проверено 23 сентября 2016 г.
  20. ^ abc «Включить JSON: предложение сделать весь текст JSON действительным ECMA-262». Экма TC39. 23 августа 2019 года . Проверено 27 августа 2019 г.
  21. ^ ab «Переход к этапу 4 — tc39/proposal-json-superset». Гитхаб . 22 мая 2018 г.
  22. ^ "BigInt - глоссарий веб-документов MDN" . Мозилла . Проверено 18 октября 2020 г.
  23. ^ Синтаксис обмена данными JSON (PDF) (2-е изд.). Экма Интернешнл . Декабрь 2017. с. 3. Синтаксис JSON не накладывает никаких ограничений на строки, используемые в качестве имен, не требует уникальности строк имен и не придает никакого значения порядку пар имя/значение.
  24. ^ abcde Крокфорд, Дуглас (30 апреля 2012 г.). «Комментарии в формате JSON». Архивировано из оригинала 4 июля 2015 года . Проверено 30 августа 2019 г. Я удалил комментарии из JSON, потому что видел, что люди использовали их для хранения директив синтаксического анализа, а такая практика разрушила бы совместимость. Я знаю, что отсутствие комментариев расстраивает некоторых людей, но это не должно. Предположим, вы используете JSON для хранения файлов конфигурации, которые хотите аннотировать. Вставьте все комментарии, которые вам нравятся. Затем пропустите его через JSMin , прежде чем передать его парсеру JSON.
  25. ^ Андриско, Марк; Джала, Ранджит; Лернер, Сорин. «Печать чисел с плавающей запятой — всегда правильный метод» (PDF) . Проверено 27 июля 2019 г.
  26. ^ «Завершающие запятые — JavaScript | MDN» . http://developer.mozilla.org . 12 сентября 2023 г. . Проверено 16 декабря 2023 г.
  27. ^ "JSON5". json5. Архивировано из оригинала 29 ноября 2020 года . Проверено 16 декабря 2020 г.
  28. ^ «Синтаксис обмена данными JSON» (PDF) . Экма Интернешнл. Декабрь 2017 года . Проверено 27 октября 2019 г. Синтаксис JSON не является спецификацией полного обмена данными. Для полноценного обмена данными требуется соглашение между производителем и потребителем о семантике, связанной с конкретным использованием синтаксиса JSON. Что JSON действительно предоставляет, так это синтаксическую структуру, к которой можно прикрепить такую ​​семантику.
  29. ^ «Спецификация языка ECMAScript 2019» (PDF) . Экма Интернешнл. Июнь 2019. Архивировано из оригинала (PDF) 12 апреля 2015 года . Проверено 27 октября 2019 г.
  30. ^ «Типы носителей». iana.org . Проверено 13 сентября 2015 г.
  31. ^ abc «Обработка приложения/json и текста/json от benschwarz · Запрос на извлечение № 2 · mislav/faraday-stack». Гитхаб . Проверено 13 сентября 2015 г.
  32. ^ «Yahoo!, JavaScript и JSON» . Программируемая сеть . 16 декабря 2005 года . Проверено 13 сентября 2015 г.
  33. ^ «Разрешить JSON-запросам доступ к текстовому/Javascript-содержимому от jakeboxer · Запрос на извлечение № 148 · AFNetworking/AFNetworking» . Гитхаб . Проверено 13 сентября 2015 г.
  34. ^ «lift/Req.scala в мастере · Lift/lift · GitHub» . Гитхаб . Проверено 13 сентября 2015 г.
  35. ^ «BrowserIO.js в наследии/ветвях/0.4/src/io – Dojo Toolkit» . dojotoolkit.org . Архивировано из оригинала 10 января 2016 года . Проверено 13 сентября 2015 г.
  36. ^ «Схема JSON и гиперсхема» . json-schema.org . Проверено 8 июня 2021 г.
  37. ^ «draft-handrews-json-schema-00 — Схема JSON: тип носителя для описания документов JSON» . json-schema.org/ . 28 января 2021 г. . Проверено 8 июня 2021 г.
  38. ^ «Реализация схемы JSON» . json-schema.org . Проверено 8 июня 2021 г.
  39. ^ Брэй, Тим (декабрь 2017 г.). Брей, Т. (ред.). «11. Вопросы IANA». RFC 8259: Формат обмена данными в нотации объектов JavaScript (JSON) . IETF . дои : 10.17487/RFC8259. S2CID  263868313.
  40. Зип, Крис (16 сентября 2012 г.). Брайан, Пол С. (ред.). «Ссылка на JSON: черновик-pbryan-zyp-json-ref-03». Рабочая группа по интернет-инжинирингу .
  41. Рианна Крокфорд, Дуглас (16 мая 2019 г.). «ЖСМин» . Проверено 12 августа 2020 г. JSMin [2001] — это инструмент минимизации, который удаляет комментарии и ненужные пробелы из файлов JavaScript.
  42. ^ «JSON: подмножество JavaScript, которого нет» . Магнус Холм. Архивировано из оригинала 13 мая 2012 года . Проверено 16 мая 2011 г.
  43. ^ «Пятое издание ECMAScript» (PDF) . Архивировано из оригинала (PDF) 14 апреля 2011 года . Проверено 18 марта 2011 г.
  44. ^ "Дугласскрокфорд/JSON-js" . Гитхаб . 13 августа 2019 г.
  45. ^ «Уязвимость отказа в обслуживании и небезопасного создания объектов в JSON (CVE-2013-0269)» . Проверено 5 января 2016 г.
  46. ^ «Уязвимость обработки контента JSON Microsoft .NET Framework, связанная с отказом в обслуживании» . Архивировано из оригинала 6 ноября 2018 года . Проверено 5 января 2016 г.
  47. ^ «JSON: обезжиренная альтернатива XML» . json.org . Проверено 14 марта 2011 г.
  48. ^ «Спецификация XML 1.1» . Консорциум Всемирной паутины . Проверено 26 августа 2019 г.
  49. ^ Сатернос, Казимир (2014). Клиент-серверные веб-приложения с Javascript и Java . «О'Рейли Медиа, Инк.». п. 45. ИСБН 9781449369316.
  50. ^ Эдельман, Джейсон; Лоу, Скотт; Освальт, Мэтт. Программирование и автоматизация сети . О'Рейли Медиа . для представления данных вы можете выбрать один из следующих: YAML, YAMLEX, JSON, JSON5, HJSON или даже чистый Python.
  51. ↑ Аб МакКомбс, Тейн (16 июля 2018 г.). «Почему JSON не является хорошим языком конфигурации». Ясная диаграмма . Проверено 15 июня 2019 г.
  52. ^ «HOCON (нотация объекта конфигурации, оптимизированная для человека)» . Гитхаб . 28 января 2019 . Проверено 28 августа 2019 г. Основная цель: сохранить семантику (древовидную структуру; набор типов; кодирование/экранирование) из JSON, но сделать его более удобным в качестве формата файла конфигурации, редактируемого человеком.
  53. ^ ab «YAML не является языком разметки (YAML™) версии 1.2» . yaml.org . Проверено 13 сентября 2015 г.
  54. ^ CSON, спецификация и README, последнее обновление: 1 июля 2021 г.
  55. ^ "config/HOCON.md в мастере · Lightbend/config". Гитхаб . Проверено 5 августа 2021 г.
  56. ^ «Файл конфигурации — 2.5.x» . www.playframework.com . Проверено 5 августа 2021 г.
  57. ^ Документы Akka.NET HOCON
  58. ^ «Документация Akka.NET | Документация Akka.NET» . getakka.net . Проверено 5 августа 2021 г.
  59. ^ Управление файлами конфигурации HOCON с помощью Puppet.
  60. ^ «Документация StreamBase». docs.streambase.com . Проверено 5 августа 2021 г.
  61. ^ «Руководство по настройке». docs.streambase.com . Проверено 5 августа 2021 г.
  62. ^ «Новый и заслуживающий внимания архив StreamBase» . docs.streambase.com . Проверено 5 августа 2021 г.
  63. ^ Примечания к выпуску Exabeam Advanced Analytics
  64. ^ Проект JITSI. «Фаза конфигурации 1». Гитхаб . Проверено 16 февраля 2021 г.
  65. ^ Проект JITSI. "ссылка.conf". Гитхаб . Проверено 16 февраля 2021 г.
  66. ^ «Формат обмена данными JSON5» . Проверено 25 июня 2022 г.
  67. ^ SQLite. «Функции и операторы JSON» . Проверено 25 июня 2023 г.
  68. ^ «JSON с комментариями — редактирование JSON в коде Visual Studio» . code.visualstudio.com . Проверено 2 октября 2023 г.
  69. ^ Батлер, Х.; Дейли, М.; Дойл, А.; Гиллис, Шон; Шауб, Т.; Хаген, Стефан (август 2016 г.). «RFC 7946 — Формат GeoJSON». Трекер данных IETF . Проверено 17 июня 2022 г.
  70. ^ "GeoJSON". geojson.org . Проверено 7 августа 2022 г.
  71. ^ «JSON → Спецификация URL» . Непрерывный . Проверено 9 апреля 2021 г.
  72. ^ «JSON внутри URL» . jsonurl . Проверено 7 августа 2022 г.
  73. ^ "JSON-LD 1.1" . Консорциум Всемирной паутины . 16 июля 2020 г. Проверено 17 июня 2022 г.
  74. ^ «JSON-LD — JSON для связывания данных» . json-ld.org . Проверено 7 августа 2022 г.
  75. ^ "JSON-RPC". jsonrpc.org . Проверено 17 июня 2022 г.
  76. ^ «JsonML (язык разметки JSON)» . JsonML.org . Проверено 17 июня 2022 г.
  77. ^ МакКейми, Стивен (14 июня 2022 г.), JsonML , получено 7 августа 2022 г.
  78. ^ «Спецификация FasterXML/smile-format: Новый дом для формата Smile» . Гитхаб . Проверено 17 июня 2022 г.
  79. Гупта, Аюш (10 февраля 2019 г.). «Понимание улыбки — формат данных, основанный на JSON». Кодируйтесь с Аюшем . Проверено 7 августа 2022 г.
  80. ^ «Универсальная двоичная спецификация JSON - универсально совместимая спецификация формата для двоичного JSON» . ubjson.org . Проверено 17 июня 2022 г.
  81. ^ «UBJSON — JSON для современного C++» . json.nlohmann.me . Проверено 7 августа 2022 г.

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