Инструменты пользователя

Инструменты сайта


json

JSON

JSON (JavaScript Object Notation) — простой формат обмена данными, основан на JavaScript. Представляет собой собой популярную альтернативу использованию XML для предоставления данных в AJAX. Стандарт 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?"
]
}
Последние версии браузеров имеют встроенную поддержку JSON и способны его обрабатывать без вызова функции eval(), например IE c 8 версии. Популярные библиотеки JavaScript используют встроенный JSON в случае его доступности: jQuery, Dojo, MooTools, Prototype, YUI.

Синтаксис

Стандарт RFC 4627 предписывает кодировать JSON только в Unicode. Кодировкой по умолчанию является UTF-8 и допускаются еще UTF-16 и UTF-32 в разновидности BE и LE (порядок следования байт). Тип кодировки должен определяться парсером автоматически на основе первых 4 байт (глава 3 стандарта).

JSON - текстовый формат, полностью независимый от языка реализации, но он использует соглашения, знакомые программистам C- подобных языков, таких как C, C++, C#, Java, JavaScript, Perl, Python и многих других.

JSON строится на двух универсальных структурах данных:

  1. Набор пар ключ/значение. В других языках аналогами являются объект, запись, структура, словарь, хэш- таблица, ассоциативный массив.
  2. Пронумерованный набор значений. В других языках аналогами являются массив, вектор, список, последовательность.

Формы структур:

  • Объект - это неупорядоченное множество пар имя/значение, заключённое в фигурные скобки { }. Между именем и значением стоит символ «:», а пары имя/значение разделяются запятыми.
  • Массив (одномерный) - это множество значений, имеющих порядковые номера (индексы). Массив заключается в квадратные скобки [ ]. Значения отделяются запятыми.
  • Значение - это строка в двойных кавычках, число (только десятичный формат), значение true или false, объект, массив или значение null.
  • Строка — это упорядоченное множество из нуля или более символов Unicode, заключенное в двойные кавычки, с использованием Escape-последовательности- последовательностей экранированных символом \ (backslash). Символы представляются простой строкой.

Функции PHP для работы с JSON

Если мы хотим получить массив в JSON формате, нам нужно только использовать встроенные готовые PHP функции: json_encode() и json_decode().

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 может быть неуместными для хранения конфиденциальных данных.

Ссылки

загрузка...
json.txt · Последние изменения: 2018/08/13 14:10 — darkfire