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?"
]
}
Последние версии браузеров имеют встроенную поддержку 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 с помощью на Ubuntu, JavaScript, perl, Синтаксис Python и многих других.

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

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

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

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

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

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


Как протестировать скрипт или установщик VPN? Используйте Надежные VPS для кратковременного использования.
PQ VPS сервера в 38+ странах.
💥 Подпишись в Телеграм 💥 и задай вопрос по сайтам и хостингам бесплатно!