JSON
Расширение имени файла |
.json |
---|---|
Тип интернет-СМИ |
приложение/json |
Введите код | ТЕКСТ |
Единый идентификатор типа (UTI) | public.json |
Тип формата | Обмен данными |
Расширено с | JavaScript |
Стандартный | СТД 90 ( RFC 8259 ), ECMA-404 , ISO/IEC 21778:2017. |
Открытый формат ? | Да |
Веб-сайт | 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» «произносится / ˈ dʒ eɪ . s ə n / , как в « Джейсон и аргонавты » . [ 2 ] [ 3 ] Первое (2013 г.) издание ECMA-404 не касалось произношения. [ 4 ] В «Справочнике системного администрирования UNIX и Linux» говорится: « Дуглас Крокфорд , который назвал и продвигал формат JSON, говорит, что он произносится как имя Джейсон. Но почему-то «JAY-sawn» [ а ] кажется, стало более распространенным явлением в техническом сообществе». [ 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 ]
История
[ редактировать ]JSON вырос из потребности в протоколе сеансовой связи между сервером и браузером в реальном времени без использования плагинов браузера, таких как Flash или Java- апплеты, — доминирующих методов, использовавшихся в начале 2000-х годов. [ 8 ]
Крокфорд первым определил и популяризировал формат JSON. [ 1 ] Эта аббревиатура возникла в компании State Software, соучредителем которой был Крокфорд и другие в марте 2001 года. Соучредители согласились создать систему, которая использовала бы стандартные возможности браузера и предоставляла веб-разработчикам уровень абстракции для создания веб-приложений с отслеживанием состояния, которые имели постоянное дуплексное соединение с веб-сервер, удерживая открытыми два соединения протокола передачи гипертекста (HTTP) и перезапуская их до истечения стандартного времени ожидания браузера, если дальнейший обмен данными не осуществлялся. Сооснователи провели круглый стол и проголосовали за то, называть ли формат данных JSML (язык разметки JavaScript) или JSON (нотация объектов JavaScript), а также под каким типом лицензии сделать его доступным. JSON.org [ 9 ] веб-сайт был запущен в 2001 году. В декабре 2005 года Yahoo! начала предлагать некоторые из своих веб-сервисов в формате JSON. [ 10 ]
Предшественник библиотек JSON использовался в детском игровом проекте по торговле цифровыми активами под названием Cartoon Orbit на Communities.com. [ нужна ссылка ] (все соучредители штата ранее работали в этой компании) для 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, 3-е издание — декабрь 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 г. Рабочая группа по проектированию Интернета упразднила 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 РАЗДЕЛИТЕЛЬ СТРОК и U+2029 Разделитель абзацев будет отображаться в строках в кавычках без экранирования, а в ECMAScript 2018 и более ранних версиях — нет. [ 16 ] [ 17 ] Это следствие того, что JSON запрещает использование только «управляющих символов». Для максимальной переносимости эти символы должны быть экранированы обратной косой чертой.
Обмен JSON в открытой экосистеме должен быть закодирован в UTF-8 . [ 6 ] Кодировка поддерживает полный набор символов Юникода, включая символы за пределами базовой многоязычной плоскости (от U+0000 до U+FFFF). Однако, если они экранированы, эти символы должны быть записаны с использованием суррогатных пар UTF-16 . Например, чтобы включить Emoji символ U+1F610 😐 НЕЙТРАЛЬНОЕ ЛИЦО в JSON:
{ "face": "😐" }
// or
{ "face": "\uD83D\uDE10" }
JSON стал строгим подмножеством ECMAScript с версии языка 2019 года. [ 17 ] [ 18 ]
Типы данных
[ редактировать ]Основные типы данных JSON:
- Число: десятичное число со знаком, которое может содержать дробную часть и может использовать экспоненциальную нотацию E, но не может включать нечисла, такие как NaN . Формат не делает различий между целыми числами и числами с плавающей запятой. JavaScript использует IEEE-754 формат с плавающей запятой двойной точности для всех своих числовых значений (позже также поддерживает BigInt [ 19 ] ), но другие языки, реализующие JSON, могут кодировать числа по-другому.
- Строка : последовательность из нуля или более Юникода символов . Строки разделяются двойными кавычками и поддерживают синтаксис экранирования обратной косой чертой .
- Логическое значение : любое из значений
true
илиfalse
- Массив : упорядоченный список из нуля или более элементов, каждый из которых может быть любого типа. В массивах используются обозначения квадратных скобок с элементами, разделенными запятыми.
- Объект : коллекция пар имя-значение , где имена (также называемые ключами) представляют собой строки. Текущий стандарт ECMA гласит: «Синтаксис JSON не накладывает никаких ограничений на строки, используемые в качестве имен, не требует уникальности строк имен и не придает никакого значения порядку пар имя/значение». [ 20 ] Объекты разделяются фигурными скобками и для разделения каждой пары используются запятые, а внутри каждой пары символ двоеточия отделяет ключ или имя от его значения.
null
: пустое значение, используя словоnull
Пробелы разрешены и игнорируются вокруг или между синтаксическими элементами (значениями и знаками препинания, но не внутри строкового значения). Для этой цели четыре конкретных символа считаются пробелами: пробел , горизонтальная табуляция , перевод строки и возврат каретки . В частности, знак порядка байтов не должен генерироваться соответствующей реализацией (хотя он может быть принят при анализе JSON). JSON не предоставляет синтаксис для комментариев . [ 21 ]
Ранние версии JSON (например, указанные в RFC 4627 ) требовал, чтобы действительный текст JSON состоял только из объекта или типа массива, который мог содержать внутри себя другие типы. Это ограничение было снято в RFC 7158 , где текст JSON был переопределен как любое сериализованное значение.
Числа в JSON не зависят от их представления в языках программирования. Хотя это позволяет числа произвольной точности сериализовать , это может привести к проблемам с переносимостью. Например, поскольку между целочисленными значениями и значениями с плавающей запятой не проводится различие, некоторые реализации могут обрабатывать 42
, 42.0
, и 4.2E+1
столько же, а другие могут и не быть. Стандарт JSON не предъявляет требований к деталям реализации, таким как переполнение , IEEE потеря точности, округление или нули со знаком , но он рекомендует ожидать не более точности, чем 754binary64 для «хорошей совместимости». При сериализации двоичного представления числа с плавающей запятой на машинном уровне (например,binary64) в удобочитаемое десятичное представление (например, числа в JSON) и обратно нет потери точности, поскольку существуют опубликованные алгоритмы, позволяющие сделать это точно и оптимально. . [ 22 ]
Комментарии были намеренно исключены из JSON. В 2012 году Дуглас Крокфорд так описал свое дизайнерское решение: «Я удалил комментарии из JSON, потому что видел, что люди использовали их для хранения директив синтаксического анализа, а такая практика разрушила бы совместимость». [ 21 ]
JSON запрещает «конечные запятые» — запятую после последнего значения внутри структуры данных. [ 23 ] Завершающие запятые — это обычная особенность производных JSON, которая упрощает использование. [ 24 ]
Совместимость
[ редактировать ]RFC 8259 описывает определенные аспекты синтаксиса JSON, которые, хотя и являются законными согласно спецификациям, могут вызвать проблемы совместимости.
- Некоторые реализации JSON принимают только тексты JSON, представляющие объект или массив. Для обеспечения совместимости приложения, обменивающиеся JSON, должны передавать сообщения, которые являются объектами или массивами.
- Спецификации допускают объекты JSON, содержащие несколько элементов с одинаковым именем. Поведение реализаций, обрабатывающих объекты с повторяющимися именами, непредсказуемо. Для обеспечения совместимости приложениям следует избегать дублирования имен при передаче объектов JSON.
- В спецификациях конкретно сказано, что порядок членов в объектах JSON не имеет значения. Для обеспечения совместимости приложениям следует избегать присвоения значения порядку членов, даже если программное обеспечение синтаксического анализа делает этот порядок видимым.
- Хотя спецификации не накладывают ограничений на величину или точность числовых литералов JSON, широко используемая реализация JavaScript хранит их как величины IEEE754 «binary64». В целях совместимости приложениям следует избегать передачи чисел, которые невозможно представить таким образом, например 1E400 или 3.141592653589793238462643383279.
- Хотя спецификации не ограничивают кодировку символов Юникода в тексте JSON, подавляющее большинство реализаций предполагают UTF-8 кодировку ; для обеспечения совместимости приложения всегда должны кодировать сообщения JSON только в UTF-8.
- Спецификации не запрещают передавать последовательности байтов, которые неправильно представляют символы Юникода. Для обеспечения совместимости приложения должны передавать сообщения, не содержащие таких последовательностей байтов.
- Спецификация не ограничивает способы сравнения строк Юникода в приложениях. Для обеспечения совместимости приложения всегда должны выполнять такие сравнения код за блоком.
В 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 определяет формат на основе JSON для определения структуры данных JSON для проверки, документирования и управления взаимодействием. Он предоставляет контракт для данных JSON, необходимых данному приложению, и способы изменения этих данных. [ 28 ] Схема JSON основана на концепциях XML-схемы (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 используется для особых случаев в качестве языка конфигурации . Однако он не поддерживает комментарии . В 2012 году Дуглас Крокфорд, создатель JSON, сказал следующее о комментариях в JSON, когда они используются в качестве языка конфигурации: «Я знаю, что отсутствие комментариев расстраивает некоторых людей, но это не должно. Предположим, вы используете JSON, чтобы сохранить файлы конфигурации, которые вы хотели бы аннотировать. Вставьте все нужные комментарии. Затем передайте их через JSMin. [ 33 ] прежде чем передать его вашему парсеру JSON». [ 21 ]
MongoDB использует данные в формате JSON для своей документо-ориентированной базы данных .
В некоторые реляционные базы данных, такие как PostgreSQL и MySQL, добавлена поддержка собственных типов данных JSON. Это позволяет разработчикам хранить данные JSON непосредственно в реляционной базе данных без необходимости конвертировать их в другой формат данных.
Безопасность
[ редактировать ]JSON, являющийся подмножеством JavaScript, может привести к неправильному представлению о том, что передавать тексты JSON в JavaScript безопасно. eval()
функция. Это небезопасно из-за некоторых допустимых текстов JSON, особенно тех, которые содержат U+2028 РАЗДЕЛИТЕЛЬ СТРОК или U+2029 PARAGRAPH SEPARATOR не является допустимым кодом JavaScript до тех пор, пока спецификации JavaScript не будут обновлены в 2019 году, поэтому старые движки могут его не поддерживать. [ 34 ] Чтобы избежать многих ловушек, вызванных выполнением произвольного кода из Интернета, появилась новая функция: JSON.parse()
, впервые был добавлен в пятое издание ECMAScript, [ 35 ] который по состоянию на 2017 год поддерживается всеми основными браузерами. Для неподдерживаемых браузеров API-совместимая библиотека JavaScript предоставлена Дугласом Крокфордом . [ 36 ] Кроме того, предложение TC39 «Подключить JSON» сделало ECMAScript строгим расширенным набором JSON начиная с версии языка 2019 года. [ 17 ] [ 18 ]
Различные реализации парсера JSON пострадали от атак типа «отказ в обслуживании» и уязвимостей массового присвоения . [ 37 ] [ 38 ]
Альтернативы
[ редактировать ]JSON позиционируется как альтернатива XML с низкими издержками, поскольку оба этих формата широко поддерживают создание, чтение и декодирование в реальных ситуациях, где они обычно используются. [ 39 ] Помимо 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 могут (даже если кавычки и обратную косую черту необходимо экранировать). [ 40 ]
Значения XML представляют собой строки символов без встроенной безопасности типов . XML имеет концепцию схемы , которая допускает строгую типизацию, определяемые пользователем типы, предопределенные теги и формальную структуру, позволяющую формальную проверку потока XML. JSON имеет несколько встроенных типов и аналогичную концепцию схемы в JSON Schema .
XML поддерживает комментарии, а JSON — нет. [ 41 ] [ 21 ]
Суперсеты
[ редактировать ]Поддержка комментариев и других функций была признана полезной, что привело к нескольких нестандартных расширений созданию JSON. Среди них HJSON, [ 42 ] HOCON и JSON5 (который, несмотря на свое название, не является пятой версией JSON). [ 43 ] [ 44 ]
ЯМЛ
[ редактировать ]YAML версии 1.2 представляет собой расширенный набор JSON; предыдущие версии не были строго совместимы. Например, экранирование косой черты /
с обратной косой чертой \
допустимо в JSON, но недопустимо в YAML. [ 45 ] YAML поддерживает комментарии, а JSON — нет. [ 45 ] [ 43 ] [ 21 ]
КОСТЬ
[ редактировать ]CSON (« Нотация объекта CoffeeScript ») использует значительные отступы , ключи без кавычек и предполагает объявление внешнего объекта. Он использовался для настройки GitHub на текстового редактора Atom . [ 46 ] [ 47 ] [ 48 ]
Существует также несвязанный проект под названием CSON («Нотация объектов рукописного сценария»), который синтаксически более похож на JSON. [ 49 ]
ХОКОН
[ редактировать ]HOCON («нотация объекта конфигурации, оптимизированная для человека») — это формат удобочитаемых данных, расширенный набор JSON. [ 50 ] Использование HOCON:
- В основном он используется в сочетании с платформой Play , [ 51 ] и разработан Lightbend .
- Он также поддерживается в качестве формата конфигурации для проектов .NET через Akka.NET. [ 52 ] [ 53 ] и Марионетка . [ 54 ]
- Трансляция TIBCO: [ 55 ] HOCON — это основной формат файла конфигурации для потоковой передачи TIBCO. [ 56 ] семейство продуктов (StreamBase, LiveView и Artifact Management Server), начиная с TIBCO Streaming Release 10. [ 57 ]
- Это также основной формат файла конфигурации для нескольких подсистем Exabeam Advanced Analytics. [ 58 ]
- Jitsi использует его как «новую» систему конфигурации, а .properties -Files как запасной вариант. [ 59 ] [ 60 ]
JSON5
[ редактировать ]JSON5 («Формат обмена данными JSON5») — это расширение синтаксиса JSON, которое, как и JSON, также является допустимым синтаксисом JavaScript. Спецификация была начата в 2012 году и завершена в 2018 году версией 1.0.0. [ 61 ] Основные отличия от синтаксиса JSON:
- Необязательные завершающие запятые
- Ключи объекта без кавычек
- Строки с одинарными кавычками и многострочные строки
- Дополнительные числовые форматы
- Комментарии
Синтаксис JSON5 поддерживается в некоторых программах как расширение синтаксиса JSON, например в SQLite . [ 62 ]
JSONC
[ редактировать ]JSONC (JSON с комментариями) — это подмножество JSON5, используемое в коде Microsoft Visual Studio : [ 63 ]
- поддерживает однострочные комментарии (
//
) и блокировать комментарии (/* */
) - принимает конечные запятые, но они не рекомендуются, и редактор выводит предупреждение
Производные
[ редактировать ]Несколько форматов сериализации были созданы на основе спецификации JSON или на ее основе. Примеры включают в себя
- JSON-LD — метод кодирования связанных данных с использованием JSON. [ 66 ] [ 67 ]
- JSON-RPC — протокол удаленного вызова процедур, закодированный в JSON. [ 68 ]
- JsonML — легкий язык разметки, используемый для сопоставления XML и JSON. [ 69 ] [ 70 ]
- Улыбка (формат обмена данными) [ 71 ] [ 72 ]
- UBJSON — двоичный компьютерный формат обмена данными, имитирующий JSON, но требующий меньшего количества байтов данных. [ 73 ] [ 74 ]
См. также
[ редактировать ]- БСОН
- Сравнение форматов сериализации данных
- Amazon Ion — расширенный набор JSON (хотя и ограничен UTF-8 , например JSON для обмена, в отличие от обычного JSON)
- Джексон (API)
- jaql — функциональный язык обработки данных и запросов, наиболее часто используемый для обработки запросов JSON.
- jq – «язык запросов JSON» и язык программирования высокого уровня.
- JSONiq — JSON-ориентированный язык запросов и обработки на основе XQuery.
- Потоковая передача JSON
- S-выражение
Примечания
[ редактировать ]- ^ / ˈ dʒ eɪ ˌ s ɒ n / , предполагая слияние, застигнутое врасплох
Ссылки
[ редактировать ]- ^ Jump up to: а б с «Дуглас Крокфорд: Сага о JSON» . Ютуб. 28 августа 2011 года . Проверено 21 февраля 2022 г. Расшифровка: видеозаписи стенограмм на Wayback Machine (архивировано 30 октября 2019 г.)
- ^ Jump up to: а б с «ИСО/МЭК 21778:2017» . ИСО . Проверено 29 июля 2019 г.
- ^ «ECMA-404: Синтаксис обмена данными JSON» (2-е изд.). Экма Интернешнл . Декабрь 2017. с. iii, сноска. Архивировано (PDF) из оригинала 27 октября 2019 г. Проверено 29 апреля 2024 г.
- ^ Jump up to: а б с «ECMA-404: формат обмена данными JSON» (1-е изд.). Экма Интернешнл . Октябрь 2013 г. Архивировано (PDF) из оригинала 1 ноября 2013 г. . Проверено 20 ноября 2023 г.
- ^ Немет, Эви; Снайдер, Гарт; Хейн, Трент Р.; Уэйли, Бен; Маккин, Дэн (2017). «19: Веб-хостинг» . Справочник по системному администрированию UNIX и Linux (5-е изд.). Аддисон-Уэсли Профессионал. ISBN 9780134278292 . Проверено 29 октября 2019 г.
- ^ Jump up to: а б Брей, Т. (декабрь 2017 г.). Брей, Т. (ред.). «Формат обмена данными нотации объектов JavaScript (JSON)» . IETF. дои : 10.17487/RFC8259 . S2CID 263868313 . Проверено 16 февраля 2018 г.
{{cite journal}}
: Для цитирования журнала требуется|journal=
( помощь ) - ^ Брэй, Тим. «JSON Redux AKA RFC7159» . Непрерывный . Проверено 16 марта 2014 г.
- ^ «Неофициальная история Java» . Эду4Java . 26 мая 2014 года. Архивировано из оригинала 26 мая 2014 года . Проверено 30 августа 2019 г.
В 1996 году Macromedia запускает технологию Flash, которая занимает место, оставленное Java и ActiveX, и становится фактическим стандартом анимации на стороне клиента.
- ^ "JSON" . json.org .
- ^ Яху!. «Использование JSON с веб-службами Yahoo!» . Архивировано из оригинала 11 октября 2007 года . Проверено 3 июля 2009 г.
- ^ Крокфорд, Дуглас (28 мая 2009 г.). «Знакомство с JSON» . json.org . Проверено 3 июля 2009 г.
Он основан на подмножестве языка программирования JavaScript, стандарт ECMA-262, 3-е издание — декабрь 1999 г.
- ^ Брей, Тим (декабрь 2017 г.). «История проекта-ietf-jsonbis-rfc7159bis-04» . Трекер данных IETF . Рабочая группа по интернет-инжинирингу . Проверено 24 октября 2019 г.
13 декабря 2017 г. [...] RFC опубликован.
- ^ Брей, Тим (13 декабря 2017 г.). «RFC 8259 — формат обмена данными в нотации объектов JavaScript (JSON)» . Трекер данных IETF . Рабочая группа по интернет-инжинирингу . Проверено 24 октября 2019 г.
Тип: RFC — Интернет-стандарт (декабрь 2017 г.; исправления); Устаревший RFC 7159; Также известен как STD 90.
- ^ « Apache и лицензия JSON » на LWN.net Джейка Эджа (30 ноября 2016 г.).
- ^ Дуглас Крокфорд (10 июля 2016 г.). «JSON в JavaScript» . Архивировано из оригинала 10 июля 2016 года . Проверено 13 августа 2016 г.
JSON — это подмножество объектной литеральной записи JavaScript.
- ^ Холм, Магнус (15 мая 2011 г.). «JSON: подмножество JavaScript, которого нет» . Вечный репозиторий. Архивировано из оригинала 13 мая 2012 года . Проверено 23 сентября 2016 г.
- ^ Jump up to: а б с «Включить JSON: предложение сделать весь текст JSON действительным ECMA-262» . Экма TC39. 23 августа 2019 года . Проверено 27 августа 2019 г.
- ^ Jump up to: а б «Переход к этапу 4 — tc39/proposal-json-superset» . Гитхаб . 22 мая 2018 г.
- ^ «BigInt — словарь веб-документов MDN» . Мозилла . Проверено 18 октября 2020 г.
- ^ ECMA-404, 2-е изд. , с. 3: «Синтаксис JSON не накладывает никаких ограничений на строки, используемые в качестве имен, не требует уникальности строк имен и не придает никакого значения порядку пар имя/значение».
- ^ Jump up to: а б с д и Крокфорд, Дуглас (30 апреля 2012 г.). «Комментарии в формате JSON» . Архивировано из оригинала 4 июля 2015 года . Проверено 30 августа 2019 г.
Я удалил комментарии из JSON, потому что видел, что люди использовали их для хранения директив синтаксического анализа, а такая практика разрушила бы совместимость. Я знаю, что отсутствие комментариев расстраивает некоторых людей, но это не должно. Предположим, вы используете JSON для хранения файлов конфигурации, которые хотите аннотировать. Вставьте все комментарии, которые вам нравятся. Затем пропустите его через JSMin, прежде чем передать его парсеру JSON.
- ^ Андриско, Марк; Джала, Ранджит; Лернер, Сорин. «Печать чисел с плавающей запятой — всегда правильный метод» (PDF) . Проверено 27 июля 2019 г.
- ^ «Завершающие запятые — JavaScript | MDN» . http://developer.mozilla.org . 12 сентября 2023 г. . Проверено 16 декабря 2023 г.
- ^ «JSON5» . json5. Архивировано из оригинала 29 ноября 2020 года . Проверено 16 декабря 2020 г.
- ^ ECMA-404, 2-е изд. , с. iii: «Синтаксис JSON не является спецификацией полного обмена данными. Для полноценного обмена данными требуется соглашение между производителем и потребителем о семантике, связанной с конкретным использованием синтаксиса JSON. Что действительно обеспечивает JSON, так это синтаксическая структура, для которой такой семантику можно прикрепить"
- ^ «Типы СМИ» . iana.org . Проверено 13 сентября 2015 г.
- ^ «Правильный заголовок типа контента для JSON» . РекБин . 13 января 2023 г. . Проверено 23 марта 2024 г.
- ^ «Схема JSON и гиперсхема» . json-schema.org . Проверено 8 июня 2021 г.
- ^ «Схема JSON — ссылки на спецификации» . json-schema.org . Проверено 22 марта 2024 г.
- ^ «Реализация схемы JSON» . json-schema.org . Проверено 8 июня 2021 г.
- ^ Брей, Тим (декабрь 2017 г.). Брей, Т. (ред.). «11. Вопросы IANA» . RFC 8259: Формат обмена данными в нотации объектов JavaScript (JSON) . IETF . дои : 10.17487/RFC8259 . S2CID 263868313 .
- ^ Зип, Крис (16 сентября 2012 г.). Брайан, Пол С. (ред.). «Ссылка на JSON: черновик-pbryan-zyp-json-ref-03» . Рабочая группа по интернет-инжинирингу .
- ^ Крокфорд, Дуглас (16 мая 2019 г.). «ЖСМин» . Проверено 12 августа 2020 г.
JSMin [2001] — это инструмент минимизации, который удаляет комментарии и ненужные пробелы из файлов JavaScript.
- ^ «JSON: подмножество JavaScript, которого нет» . Магнус Холм. Архивировано из оригинала 13 мая 2012 года . Проверено 16 мая 2011 г.
- ^ «ECMA-262: Спецификация языка ECMAScript» (5-е изд.). Декабрь 2009 г. Архивировано (PDF) из оригинала 14 апреля 2011 г. . Проверено 18 марта 2011 г.
- ^ «Дугласскрокфорд/JSON-js» . Гитхаб . 13 августа 2019 г.
- ^ «Уязвимость отказа в обслуживании и небезопасного создания объектов в JSON (CVE-2013-0269)» . Проверено 5 января 2016 г.
- ^ «Уязвимость Microsoft .NET Framework JSON, связанная с отказом в обслуживании» . Архивировано из оригинала 6 ноября 2018 года . Проверено 5 января 2016 г.
- ^ «JSON: обезжиренная альтернатива XML» . json.org . Проверено 14 марта 2011 г.
- ^ «Спецификация XML 1.1» . Консорциум Всемирной паутины . Проверено 26 августа 2019 г.
- ^ Сатернос, Казимир (2014). Клиент-серверные веб-приложения с Javascript и Java . «О'Рейли Медиа, Инк.». п. 45. ИСБН 9781449369316 .
- ^ Эдельман, Джейсон; Лоу, Скотт; Освальт, Мэтт. Программирование и автоматизация сети . О'Рейли Медиа .
для представления данных вы можете выбрать один из следующих: YAML, YAMLEX, JSON, JSON5, HJSON или даже чистый Python.
- ^ Jump up to: а б МакКомбс, Тейн (16 июля 2018 г.). «Почему JSON не является хорошим языком конфигурации» . Ясная диаграмма . Проверено 15 июня 2019 г.
- ^ «HOCON (нотация объекта конфигурации, оптимизированная для человека)» . Гитхаб . 28 января 2019 . Проверено 28 августа 2019 г.
Основная цель: сохранить семантику (древовидную структуру; набор типов; кодирование/экранирование) из JSON, но сделать его более удобным в качестве формата файла конфигурации, редактируемого человеком.
- ^ Jump up to: а б «YAML не является языком разметки (YAML™) версии 1.2» . yaml.org . Проверено 13 сентября 2015 г.
- ^ Дом, Ли (2014). «Обозначение объекта CoffeeScript» . Большая книга атома . Архивировано из оригинала 22 апреля 2023 года . Проверено 29 апреля 2024 г.
- ^ «Базовая настройка» . атома Руководство по летной эксплуатации . Гитхаб . Архивировано из оригинала 29 апреля 2024 года . Проверено 29 апреля 2024 г.
- ^ «КСОН» . Беври. 20 декабря 2023 года. Архивировано из оригинала 23 апреля 2024 года . Получено 29 апреля 2024 г. — через GitHub .
- ^ Сонхун, Кан (1 июля 2021 г.). «КСОН» . Архивировано из оригинала 16 декабря 2023 года . Получено 27 февраля 2023 г. — через GitHub .
- ^ «config/HOCON.md в мастере · Lightbend/config» . Гитхаб . Проверено 5 августа 2021 г.
- ^ «Файл конфигурации — 2.5.x» . www.playframework.com . Проверено 5 августа 2021 г.
- ^ Документы As.NET HOCON
- ^ «Документация Akka.NET | Документация Akka.NET» . getakka.net . Проверено 5 августа 2021 г.
- ^ «Управление файлами конфигурации HOCON с помощью Puppet» . Архивировано из оригинала 11 февраля 2017 года . Проверено 4 марта 2023 г.
- ^ «Документация StreamBase» . docs.streambase.com . Проверено 5 августа 2021 г.
- ^ «Руководство по настройке» . docs.streambase.com . Проверено 5 августа 2021 г.
- ^ «Новый и заслуживающий внимания архив StreamBase» . docs.streambase.com . Проверено 5 августа 2021 г.
- ^ «Примечания к выпуску Exabeam Advanced Analytics» . Архивировано из оригинала 20 октября 2020 года . Проверено 4 марта 2023 г.
- ^ Проект ДЖИТСИ. «Фаза конфигурации 1» . Гитхаб . Проверено 16 февраля 2021 г.
- ^ Проект ДЖИТСИ. "ссылка.конф" . Гитхаб . Проверено 16 февраля 2021 г.
- ^ «Формат обмена данными JSON5» . Проверено 25 июня 2022 г.
- ^ SQLite. «Функции и операторы JSON» . Проверено 25 июня 2023 г.
- ^ «JSON с комментариями — редактирование JSON в коде Visual Studio» . Код Visual Studio . Майкрософт . Проверено 29 апреля 2024 г.
- ^ Батлер, Х.; Дейли, М.; Дойл, А.; Гиллис, Шон; Шауб, Т.; Хаген, Стефан (август 2016 г.). «RFC 7946 — Формат GeoJSON» . IETF Трекер данных . Проверено 17 июня 2022 г.
- ^ «ГеоJSON» . geojson.org . Проверено 7 августа 2022 г.
- ^ «JSON-LD 1.1» . Консорциум Всемирной паутины . 16 июля 2020 г. Проверено 17 июня 2022 г.
- ^ «JSON-LD — JSON для связывания данных» . json-ld.org . Проверено 7 августа 2022 г.
- ^ «JSON-RPC» . jsonrpc.org . Проверено 17 июня 2022 г.
- ^ «JsonML (язык разметки JSON)» . JsonML.org . Проверено 17 июня 2022 г.
- ^ МакКейми, Стивен (14 июня 2022 г.), JsonML , получено 7 августа 2022 г.
- ^ «Спецификация формата FasterXML/smile: новый дом для формата Smile» . Гитхаб . Проверено 17 июня 2022 г.
- ^ Гупта, Аюш (10 февраля 2019 г.). «Понимание улыбки — формат данных на основе JSON» . Кодируйтесь с Аюшем . Проверено 7 августа 2022 г.
- ^ «Универсальная двоичная спецификация JSON — универсально совместимая спецификация формата двоичного JSON» . ubjson.org . Проверено 17 июня 2022 г.
- ^ «UBJSON — JSON для современного C++» . json.nlohmann.me . Проверено 7 августа 2022 г.