JSON (JavaScript Object Notation) — простой формат обмена данными, основан на JavaScript. Представляет собой собой популярную альтернативу использованию xml для предоставления данных в Принципы построения AJAX JS. Стандарт JSON описан в RFC 4627 application/json.
JSON является подмножеством языка Что такое YAML. Спецификация YAML 1.2 указывает, что любой файл в формате JSON является корректным файлом в формате YAML.
Пример данных в форматах xml и JSON:
<! Формат XML > <author> <name>Wendell Berry</name> <books> <book>The Unsettling of America</book> <book>What are People For?</book> </books> </author> // Формат JSON { "name": "Wendell Berry", "books": [ "The Unsettling of America", "What are People For?" ] }
Стандарт RFC 4627 предписывает кодировать JSON только в Unicode. Кодировкой по умолчанию является UTF-8 и допускаются еще UTF-16 и UTF-32 в разновидности BE и LE (порядок следования байт). Тип кодировки должен определяться парсером автоматически на основе первых 4 байт (глава 3 стандарта).
JSON - текстовый формат, полностью независимый от языка реализации, но он использует соглашения, знакомые программистам C- подобных языков, таких как C, C++, C#, Как установить Java на Ubuntu, JavaScript, perl, Синтаксис Python и многих других.
JSON строится на двух универсальных структурах данных:
Формы структур:
Если мы хотим получить массив в JSON формате, нам нужно только использовать встроенные готовые PHP функции:
<?php $json = '{"a":1,"b":2,"c":3,"d":4,"e":5}'; var_dump(json_decode($json)); var_dump(json_decode($json, true)); ?>
JSONP (аJSON Padding — «JSON с подкладкой») является расширением JSON, когда имя функции обратного вызова указывается в качестве входного аргумента.
В основу технологии положен тот факт, что политика безопасности браузера не запрещает использовать тег
<script type="text/javascript" src="…"></script>
для обращения к серверам, отличным от сервера, с которого произошла загрузка страницы.
Без использования технологии JSONP (то есть используя просто JSON кодирование данных) сервер может вернуть только данные. Например, так:
{"paper": "A4", "count": 5}
Однако это только данные, и они не могут влиять на браузер.
Используя технику JSONP, стороннему серверу передаётся в строке вызова (GET) имя callback функции:
<script type="text/javascript" src="http://example.com/getjson?jsonp=parseResponse"></script>
Здесь параметр jsonp содержит имя callback функции parseResponse.
Теперь посторонний сервер example.com может вернуть следующий код:
parseResponse({"paper": "A4", "count": 5})
Теперь код вызывает javascript-функцию первого домена.
Первоначально идея была предложена в блоге MacPython в 2005 году[25] и в настоящее время используется многими Web 2.0 приложениями, такими, как Dojo Toolkit Applications, Google Toolkit Applications и zanox Web Services. Дальнейшие расширения этого протокола были предложены с учётом ввода дополнительных аргументов, как, например, в случае JSONPP] при поддержке S3DB веб-сервисов.
Поскольку JSONP использует скрипт теги, вызовы по сути открыты миру. По этой причине JSONP может быть неуместными для хранения конфиденциальных данных.