JSON
- Homepage: JSON
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 строится на двух универсальных структурах данных:
- Набор пар ключ/значение. В других языках аналогами являются объект, запись, структура, словарь, хэш- таблица, ассоциативный массив.
- Пронумерованный набор значений. В других языках аналогами являются массив, вектор, список, последовательность.
Формы структур:
- Объект - это неупорядоченное множество пар имя/значение, заключённое в фигурные скобки { }. Между именем и значением стоит символ «:», а пары имя/значение разделяются запятыми.
- Массив (одномерный) - это множество значений, имеющих порядковые номера (индексы). Массив заключается в квадратные скобки [ ]. Значения отделяются запятыми.
- Значение - это строка в двойных кавычках, число (только десятичный формат), значение true или false, объект, массив или значение null.
- Строка — это упорядоченное множество из нуля или более символов Unicode, заключенное в двойные кавычки, с использованием Escape-последовательности- последовательностей экранированных символом \ (backslash). Символы представляются простой строкой.
Функции PHP для работы с JSON
Если мы хотим получить массив в JSON формате, нам нужно только использовать встроенные готовые PHP функции:
- json_encode()
- json_decode() - Декодирует строку JSON.
<?php $json = '{"a":1,"b":2,"c":3,"d":4,"e":5}'; var_dump(json_decode($json)); var_dump(json_decode($json, true)); ?>
JSONP и JSONPP
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 может быть неуместными для хранения конфиденциальных данных.
Ссылки


