Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

JSON ( JavaScript Object Notation , выраженный / с ən / ; и / ˌ с ɒ п / ) является открытым стандартом формат файла , и формат обмена данными, которая использует читаемый человеком текст для хранения и передачи данных объектов состоящий из пар атрибут-значение и типов данных массива (или любого другого сериализуемого значения). Это очень распространенный формат данных , который используется в самых разных приложениях, например, в качестве замены дляXML в системах AJAX . [1]

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

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

Именование и произношение [ править ]

Аббревиатура возникла в State Software, компании, основанной Дугласом Крокфордом и другими в марте 2001 года.

В 2017 международный стандарт (ECMA-404 и ISO / IEC 21778: 2017) определяет "Произносится / dʒ eɪ . S ə п / , как и в ' Джейсон и The аргонавтов ' ". [4] [6] Первое (2013 г.) издание ECMA-404 не касалось произношения. [7] В Руководстве по системному администрированию UNIX и Linux говорится, что « Дуглас Крокфорд , который назвал и продвигал формат JSON, говорит, что это произносится как имя Джейсон. Но почему-то« JAY-sawn », похоже, стало более распространенным в техническом сообществе. . " [8]Крокфорд сказал в 2011 году: «Есть много споров о том, как вы это произносите, но меня это строго не волнует». [9]

История [ править ]

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

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

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

Крокфорд первым определил и популяризировал формат JSON. [11] Соучредители State Software согласились создать систему, которая использовала стандартные возможности браузера и обеспечивала уровень абстракции для веб-разработчиков для создания веб-приложений с отслеживанием состояния, которые имели постоянное дуплексное соединение с веб-сервером, поддерживая два протокола передачи гипертекста (HTTP ) соединения открываются и перезапускают их до стандартных тайм-аутов браузера, если обмен данными не производился. Соучредители провели обсуждение за круглым столом и проголосовали за то, следует ли называть формат данных JSML или JSON, а также под каким типом лицензии сделать его доступным. Чип Морнингстар разработал идею State Application Framework в State Software.[12] [13]

Система была продана Sun Microsystems , Amazon.com и EDS . Веб-сайт JSON.org [14] был запущен в 2002 году. В декабре 2005 года Yahoo! начала предлагать некоторые из своих веб-сервисов в формате JSON. [15]

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

В октябре 2013 года Ecma International опубликовала первую редакцию своего стандарта JSON ECMA-404. [2] В том же году 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 [4] в качестве международного стандарта. 13 декабря 2017 года Целевая группа Internet Engineering устарела RFC 7159 , когда он опубликовал RFC      8259 , который является текущей версией Интернет-стандарта STD 90. [17] [18]

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

Синтаксис [ править ]

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

{  "firstName" :  "John" ,  "lastName" :  "Smith" ,  "isAlive" :  true ,  "age" :  27 ,  "address" :  {  "streetAddress" :  "21 2nd Street" ,  "city" :  "New Йорк " ,  " штат " :  " Нью-Йорк " ,  " postalCode " :  " 10021-3100 "  },  " phoneNumbers " :  [  {  " type " : "home" ,  "number" :  "212 555-1234"  },  { "тип" :  "офис" ,  "номер" :  "646 555-4567"  }  ],  "дети" :  [],  "супруга" :  null }

Кодировка символов [ править ]

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

Обмен JSON в открытой экосистеме должен быть закодирован в UTF-8 . [3] Кодировка поддерживает полный набор символов Unicode, включая символы за пределами базовой многоязычной плоскости (от U + 10000 до U + 10FFFF). Однако в случае экранирования эти символы должны быть записаны с использованием суррогатных пар UTF-16 , что упускается некоторыми парсерами JSON. [ оригинальное исследование? ] Например, чтобы включить символ Emoji U + 1F610 😐 NEUTRAL FACE в JSON:

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

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

Типы данных [ править ]

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

  • Число: десятичное число со знаком, которое может содержать дробную часть и может использовать экспоненциальную нотацию E , но не может включать не числа, такие как NaN . Формат не делает различий между целыми числами и числами с плавающей запятой. JavaScript использует формат с плавающей запятой двойной точности для всех своих числовых значений (позже он также поддерживает BigInt [25] ), но другие языки, реализующие JSON, могут кодировать числа по-другому.
  • Строка : последовательность из нуля или более символов Юникода . Строки разделяются двойными кавычками и поддерживают синтаксис экранирования с обратной косой чертой .
  • Логическое : любое из значений trueилиfalse
  • Массив : упорядоченный список из нуля или более элементов, каждый из которых может быть любого типа. В массивах используется запись в квадратных скобках с элементами, разделенными запятыми.
  • Объект : набор пар имя-значение, где имена (также называемые ключами) являются строками. Объекты предназначены для представления ассоциативных массивов , [2] , где каждый ключ является уникальным в пределах объекта. Объекты разделяются фигурными скобками, каждая пара разделяется запятыми, а внутри каждой пары символ двоеточия «:» отделяет ключ или имя от его значения.
  • null: пустое значение, использующее слово null

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

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

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

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

JSON запрещает "конечные запятые", запятую после последнего значения внутри структуры данных. [28] Конечные запятые - обычная особенность производных JSON для облегчения использования. [29]

Семантика [ править ]

Хотя JSON обеспечивает синтаксическую основу для обмена данными, для однозначного обмена данными также требуется соглашение между производителем и потребителем о семантике конкретного использования синтаксиса JSON. [30] Одним из примеров того, когда такое соглашение необходимо, является сериализация типов данных, определенных синтаксисом JavaScript , которые не являются частью стандарта JSON, например Date, Function, Regular Expression и undefined. [31]

Метаданные и схема [ править ]

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

Схема JSON определяет формат на основе JSON для определения структуры данных JSON для проверки, документирования и управления взаимодействием. Он предоставляет контракт для данных JSON, необходимых для данного приложения, и того, как эти данные могут быть изменены. [38] Схема JSON основана на концепциях схемы XML (XSD), но основана на JSON. Как и в XSD, одни и те же инструменты сериализации / десериализации могут использоваться как для схемы, так и для данных, и это самоописание. Это указано в Интернет-проекте IETF, в настоящее время это черновик 2019-09 годов, который был выпущен 19 сентября 2019 года. [39] Для разных языков программирования доступно несколько валидаторов, [40]каждый с различными уровнями соответствия. Стандартного расширения имени файла не существует, но некоторые предлагали его .schema.json. [41]

Стандарт JSON не поддерживает ссылки на объекты , но существует черновик стандарта IETF для ссылок на объекты на основе JSON. [42] Доджо Инструментарий поддерживает ссылки на объекты , используя стандартный JSON; в частности, dojox.json.refмодуль обеспечивает поддержку нескольких форм ссылок, включая циклические , множественные, ссылки между сообщениями и отложенные ссылки. Внутренне оба делают это, назначая "$ref"ключ для таких ссылок и разрешая его во время синтаксического анализа; черновик IETF определяет только синтаксис URL, но Dojo допускает больше. [43] [44] [45]В качестве альтернативы существуют нестандартные решения, такие как использование переменных Mozilla JavaScript Sharp. Однако эта функциональность устарела в JavaScript 1.8.5 и была удалена в Firefox версии 12. [46]

Использует [ редактировать ]

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

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

Хотя JSON является форматом сериализации данных, в качестве языка конфигурации он использовался нерегулярно . В этом случае поддержка комментариев и других функций была сочтена полезной, что привело к созданию нескольких нестандартных надмножеств JSON . Среди них HJSON, [47] HOCON и JSON5 (который, несмотря на свое название, не является пятой версией JSON). [48] [49] Основная цель YAML версии 1.2 заключалась в том, чтобы сделать нестандартный формат строгим надмножеством JSON. [50]

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

JSON задуман как формат сериализации данных . Однако его дизайн как подмножество JavaScript может привести к неправильному представлению о том, что передавать тексты JSON в функцию JavaScript безопасно . Это небезопасно, поскольку некоторые допустимые тексты JSON, в частности те, которые содержат U + 2028 LINE SEPARATOR или U + 2029 PARAGRAPH SEPARATOR , не являются действительным кодом JavaScript до тех пор, пока спецификации JavaScript не будут обновлены в 2019 году, и поэтому старые движки могут не поддерживать его. [52] Чтобы избежать многих ловушек, вызванных выполнением произвольного кода из Интернета, в пятую редакцию ECMAScript впервые была добавлена новая функция , [53]eval() JSON.parse()который по состоянию на 2017 год поддерживается всеми основными браузерами. Для неподдерживаемых браузеров библиотека JavaScript, совместимая с API, предоставляется Дугласом Крокфордом . [54] Кроме того, предложение TC39 «Subsume JSON» сделало ECMAScript строгим надмножеством JSON начиная с версии языка 2019 года. [23] [24]

Различные реализации парсера JSON пострадали от атак типа «отказ в обслуживании» и уязвимости массового назначения . [55] [56]

Сравнение с другими форматами [ править ]

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

YAML [ править ]

YAML версии 1.2 является расширенным набором JSON; предыдущие версии не были строго совместимы. Например, экранирование косой черты /с помощью обратной косой черты \допустимо в JSON, но недействительно в YAML. [50] YAML поддерживает комментарии, а JSON - нет. [50] [48] [26]

XML [ править ]

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

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

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

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

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

XML поддерживает комментарии, а JSON - нет. [59] [26]

Производные [ править ]

Несколько форматов сериализации были созданы на основе спецификации JSON. Примеры включают GeoJSON , JSON-LD , Smile (формат обмена данными) , UBJSON , JSON-RPC , JsonML и JSON → URL [60] .

См. Также [ править ]

  • Сравнение форматов сериализации данных
  • Джексон (API)
  • Потоковая передача JSON
  • S-выражение

Ссылки [ править ]

  1. ^ «Современное возвращение к AJAX» . Проверено 12 апреля 2017 года .
  2. ^ a b c «Формат обмена данными JSON» (PDF) . ECMA International. Октябрь 2013 . Проверено 24 октября 2019 года .
  3. ^ a b «Формат обмена данными JavaScript Object Notation (JSON)» . IETF. Декабрь 2017 . Проверено 16 февраля 2018 года .
  4. ^ a b c «ISO / IEC 21778: 2017» . ISO . Проверено 29 июля 2019 года .
  5. ^ Брей, Тим. "JSON Redux AKA RFC7159" . Продолжается . Проверено 16 марта 2014 года .
  6. ^ "Стандартный ECMA-404 - Синтаксис обмена данными JSON" (PDF) . Ecma International. Декабрь 2017. с. 1, сноска . Проверено 27 октября 2019 года .
  7. ^ ECMA-404: Формат обмена данными JSON (PDF) (1-е изд.). Женева: ECMA International. Октябрь 2013.
  8. ^ Немет, Эви; Снайдер, Гарт; Hein, Trent R .; Уэйли, Бен; Маккин, Дэн (2017). «19: Веб-хостинг» . Справочник по системному администрированию UNIX и Linux (5-е изд.). Эддисон-Уэсли Профессионал. ISBN 9780134278292. Проверено 29 октября 2019 года .
  9. ^ "Дуглас Крокфорд: Сага JSON - Видео стенограммы" . transcriptvids.com . Проверено 29 октября 2019 года .
  10. ^ «Неофициальная история Java» . Edu4Java . 26 мая 2014. Архивировано из оригинала 26 мая 2014 года . Проверено 30 августа 2019 . В 1996 году Macromedia запускает технологию Flash, которая занимает пространство, оставленное Java и ActiveX, и становится де-факто стандартом для анимации на стороне клиента.
  11. ^ "Дуглас Крокфорд - Сага JSON" . YouTube. 28 августа 2011 . Проверено 23 сентября 2016 года .
  12. ^ "Биография Чипа Морнингстара" . nd
  13. ^ «Государственное программное обеспечение преодолевает барьер для разработки веб-приложений с помощью State Application Framework: программное обеспечение позволяет разработчикам создавать действительно интерактивные приложения; снижает затраты, время разработки и улучшает взаимодействие с пользователем» . PR Newswire . 12 февраля 2002 года в архив с оригинала на 5 июня 2013 года . Проверено 19 марта 2013 года .
  14. ^ "JSON" . json.org .
  15. ^ Yahoo !. «Использование JSON с веб-службами Yahoo!» . Архивировано из оригинала на 11 октября 2007 года . Проверено 3 июля 2009 года .
  16. ^ Крокфорд, Дуглас (28 мая 2009). «Представляем JSON» . json.org . Проверено 3 июля 2009 года . Он основан на подмножестве языка программирования JavaScript, Standard ECMA-262 3rd Edition - December 1999.
  17. ^ "История проекта-ietf-jsonbis-rfc7159bis-04" . IETF Datatracker . Инженерная группа Интернета . Проверено 24 октября 2019 года . 2017-12-13 [...] Опубликован RFC
  18. ^ «RFC 8259 - Формат обмена данными JavaScript Object Notation (JSON)» . IETF Datatracker . Инженерная группа Интернета . Проверено 24 октября 2019 года . Тип: RFC - стандарт Интернета (декабрь 2017 г .; исправления); Устаревший RFC 7159; Также известен как STD 90
  19. ^ Apache и лицензия JSON на LWN.net, автор Джейк Эдж (30 ноября 2016 г.)
  20. Дуглас Крокфорд (10 июля 2016 г.). «JSON в JavaScript» . Архивировано из оригинального 10 июля 2016 года . Проверено 13 августа 2016 года . JSON - это подмножество объектной буквальной нотации JavaScript.
  21. Холм, Магнус (15 мая 2011 г.). «JSON: подмножество JavaScript, которого нет» . Вечное хранилище . Проверено 23 сентября 2016 года .
  22. ^ "Предложение TC39: Subsume JSON" . Комитет ECMA TC39. 22 мая 2018.
  23. ^ a b «Subsume JSON: Предложение сделать весь текст JSON действительным ECMA-262» . Ecma TC39. 23 августа 2019 . Проверено 27 августа 2019 года .
  24. ^ a b «Переход к этапу 4 - tc39 / offer-json-superset» . GitHub . 22 мая 2018.
  25. ^ "BigInt - глоссарий веб-документов MDN" . Mozilla . Проверено 18 октября, 2020 .
  26. ^ а б в г д Крокфорд, Дуглас (30 апреля 2012 г.). «Комментарии в JSON» . Архивировано из оригинала 4 июля 2015 года . Проверено 30 августа 2019 года . Я удалил комментарии из JSON, потому что видел, как люди использовали их для хранения директив синтаксического анализа, что привело бы к нарушению совместимости. Я знаю, что некоторых людей огорчает отсутствие комментариев, но этого не должно быть. Предположим, вы используете JSON для хранения файлов конфигурации, которые хотите аннотировать. Вставьте все комментарии, которые вам нравятся. Затем пропустите его через JSMin, прежде чем передать его парсеру JSON.
  27. ^ Андриско, Марк; Джхала, Ранджит; Лернер, Сорин. «Печать чисел с плавающей запятой - всегда правильный метод» (PDF) . Проверено 27 июля 2019 года .
  28. ^ Синтаксис обмена данными JSON (PDF) (2-е изд.). Ecma International . Декабрь 2017. с. 11. Один токен-запятая отделяет значение от следующего имени. CS1 maint: дата и год ( ссылка )
  29. ^ "JSON5" . json5. Архивировано из оригинального 29 ноября 2020 года . Проверено 16 декабря 2020 года .
  30. ^ «Синтаксис обмена данными JSON» (PDF) . Ecma International. Декабрь 2017 . Проверено 27 октября 2019 года . Синтаксис JSON не является спецификацией полного обмена данными. Значимый обмен данными требует соглашения между производителем и потребителем о семантике, связанной с конкретным использованием синтаксиса JSON. Что действительно предоставляет JSON, так это синтаксическая структура, к которой может быть прикреплена такая семантика.
  31. ^ «Спецификация языка ECMAScript 2019» (PDF) . Ecma International. Июнь 2019. Архивировано из оригинального (PDF) 12 апреля 2015 года . Проверено 27 октября 2019 года .
  32. ^ «Типы СМИ» . iana.org . Проверено 13 сентября 2015 года .
  33. ^ a b c "Обработать приложение / json и текст / json от benschwarz · Запрос на извлечение # 2 · mislav / faraday-stack" . GitHub . Проверено 13 сентября 2015 года .
  34. ^ "Yahoo !, JavaScript и JSON" . ПрограммируемыйWeb . 16 декабря 2005 . Проверено 13 сентября 2015 года .
  35. ^ "Сделать запросы JSON разрешить текст / содержимое javascript с помощью jakeboxer · Запрос на извлечение # 148 · AFNetworking / AFNetworking" . GitHub . Проверено 13 сентября 2015 года .
  36. ^ "Лифт / Req.scala at master · lift / lift · GitHub" . GitHub . Проверено 13 сентября 2015 года .
  37. ^ «BrowserIO.js в legacy / branch / 0.4 / src / io - Dojo Toolkit» . dojotoolkit.org . Архивировано из оригинального 10 января 2016 года . Проверено 13 сентября 2015 года .
  38. ^ «Схема JSON и гипер-схема» . json-schema.org . Проверено 11 февраля 2020 года .
  39. ^ "draft-handrews-json-schema-02 - Схема JSON: Тип носителя для описания документов JSON" . json-schema.org/ . 19 сентября 2019 . Проверено 11 февраля 2020 года .
  40. ^ «Реализации схемы JSON» . json-schema.org . Проверено 11 февраля 2020 года .
  41. ^ "Расширение файла схемы Json" . Переполнение стека .
  42. ^ ZYP, Kris (16 сентября 2012). Брайан, Пол С. (ред.). «Ссылка JSON: draft-pbryan-zyp-json-ref-03» . Инженерная группа Интернета .
  43. ^ Zyp, Крис. "dojox.json.ref" . Додзё .
  44. ^ ZYP, Kris (17 июня 2008). «Ссылки на JSON в Додзё» . SitePen . Проверено 3 июля 2009 года .
  45. Фон Газа, Тис (7 декабря 2010 г.). «Ссылки на JSON в jQuery» . НУБУНТУ . Архивировано из оригинала 7 мая 2015 года . Проверено 7 декабря 2010 года .
  46. ^ «Резкие переменные в JavaScript» . Сеть разработчиков Mozilla . 4 апреля 2015 года . Проверено 21 апреля 2012 года .
  47. ^ Эдельман, Джейсон; Лоу, Скотт; Освальт, Мэтт. Сетевое программирование и автоматизация . O'Reilly Media . для представления данных вы можете выбрать один из следующих: YAML, YAMLEX, JSON, JSON5, HJSON или даже чистый Python
  48. ^ a b Маккомбс, Тэйн. «Почему JSON - не лучший язык конфигурации» . Lucid Chart . Проверено 15 июня 2019 года .
  49. ^ "HOCON (оптимизированное для человека обозначение объекта конфигурации)" . GitHub . 28 января 2019 . Проверено 28 августа 2019 года . Основная цель: сохранить семантику (древовидную структуру; набор типов; кодирование / экранирование) от JSON, но сделать его более удобным в качестве редактируемого человеком формата файла конфигурации.
  50. ^ a b c «YAML не является языком разметки (YAML ™) версии 1.2» . yaml.org . Проверено 13 сентября 2015 года .
  51. ^ Крокфорд, Дуглас (16 мая 2019). «JSMin» . Проверено 12 августа 2020 года . JSMin [2001] - это инструмент минификации, который удаляет комментарии и ненужные пробелы из файлов JavaScript.
  52. ^ «JSON: Подмножество JavaScript, которого нет» . Магнус Холм . Проверено 16 мая 2011 года .
  53. ^ "Пятое издание ECMAScript" (PDF) . Архивировано из оригинального (PDF) 14 апреля 2011 года . Проверено 18 марта 2011 года .
  54. ^ "Дугласкрокфорд / JSON-js" . GitHub . 13 августа 2019.
  55. ^ «Отказ в обслуживании и уязвимость создания небезопасных объектов в JSON (CVE-2013-0269)» . Проверено 5 января 2016 года .
  56. ^ «Уязвимость, связанная с отказом в обслуживании при обработке содержимого JSON в Microsoft .NET Framework» . Проверено 5 января 2016 года .
  57. ^ «JSON: обезжиренная альтернатива XML» . json.org . Проверено 14 марта 2011 года .
  58. ^ «Спецификация XML 1.1» . Консорциум World Wide Web . Проверено 26 августа 2019 года .
  59. ^ Saternos Казимир (2014). Клиент-серверные веб-приложения с Javascript и Java . п. 45. ISBN 9781449369316.
  60. ^ «JSON → Спецификация URL» . Продолжается . Проверено 9 апреля 2021 года . CS1 maint: обескураженный параметр ( ссылка )

Внешние ссылки [ править ]

  • Официальный веб-сайт
  • «Формат обмена данными ECMA-404 JSON» (PDF) . ECMA Int'l.
  • STD 90 , формат обмена данными JSON