<!DOCTYPE html>
<html class="client-nojs" lang="ru" dir="ltr"><head>
    <meta charset="UTF-8">
    <title>JSON</title>
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link rel="icon" type="image/png" href="./_res_/favicon.png">
    <link rel="canonical" href="https://ru.wikipedia.org/wiki/JSON"> <link href="./_mw_/ext.cite.styles.css" rel="stylesheet" type="text/css">
    <link href="./_mw_/ext.pygments.css" rel="stylesheet" type="text/css">
    <link href="./_mw_/skins.vector.styles.legacy.css" rel="stylesheet" type="text/css">
    <meta name="ResourceLoaderDynamicStyles" content="">
    <link href="./_mw_/ext.gadget.common-site.css" rel="stylesheet" type="text/css">
    <link href="./_mw_/ext.gadget.logo.css" rel="stylesheet" type="text/css">
    <link rel="stylesheet" type="text/css" href="./_mw_/site.styles.css">
    <link rel="stylesheet" type="text/css" href="./_mw_/noscript.css">
    <link rel="stylesheet" type="text/css" href="./_res_/footer.css">
    <link rel="stylesheet" type="text/css" href="./_res_/vector.css">
  </head>

  <body class="skin-vector-legacy mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-0 ns-subject page-JSON rootpage-JSON skin-vector action-view">
    <div id="content" class="mw-body" role="main">
      <a id="top"></a>
      <h1 id="firstHeading" class="firstHeading mw-first-heading"><span class="mw-page-title-main">JSON</span></h1>
      <div id="bodyContent" class="vector-body">
        <div id="contentSub">
          <div id="mw-content-subtitle"></div>
        </div>
        <div id="mw-content-text" class="mw-body-content mw-content-ltr" lang="ru" dir="ltr"><div class="mw-content-ltr mw-parser-output" lang="ru" dir="ltr"><table class="infobox infobox-6ef8517180a2f5b3" style="" data-name="Файловый формат"><tbody><tr><th colspan="2" scope="colgroup" class="infobox-above" style="">JSON</th></tr><tr><td colspan="2" class="infobox-image" style=""> <span data-wikidata-claim-id="Q2063$54dfb966-46df-ea46-1d47-95497ffc8487" class="wikidata-claim" data-wikidata-property-id="P154"><span class="wikidata-snak wikidata-main-snak"><span typeof="mw:File/Frameless"><img alt="Изображение логотипа" src="./_assets_/0c70a452f799bfe840676ee341124611/JSON_vector_logo.svg.png" decoding="async" width="80" height="80" class="mw-file-element" data-file-width="160" data-file-height="160" loading="lazy"></span></span></span> </td></tr>
<tr>
<th scope="row" class="plainlist"><a href="%D0%A0%D0%B0%D1%81%D1%88%D0%B8%D1%80%D0%B5%D0%BD%D0%B8%D0%B5_%D0%B8%D0%BC%D0%B5%D0%BD%D0%B8_%D1%84%D0%B0%D0%B9%D0%BB%D0%B0" title="Расширение имени файла">Расширение</a></th>
<td class="plainlist">
<span data-wikidata-claim-id="Q2063$fda9ee1d-42ba-cf66-6726-a77ec8f6b220" class="wikidata-claim" data-wikidata-property-id="P1195"><span class="wikidata-snak wikidata-main-snak"><code>.json</code></span><sup id="cite_ref-_70357e99dab3e19f_1-0" class="reference"><a href="#cite_note-_70357e99dab3e19f-1"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup></span></td>
</tr>
<tr>
<th scope="row" class="plainlist"><a href="MIME" title="MIME">MIME</a>-тип</th>
<td class="plainlist">
<span data-wikidata-claim-id="Q2063$14aa8905-4e58-a62d-9173-b61632223495" class="wikidata-claim" data-wikidata-property-id="P1163"><span class="wikidata-snak wikidata-main-snak">application/json</span><sup id="cite_ref-_74633f2fcf22fde7_2-0" class="reference"><a href="#cite_note-_74633f2fcf22fde7-2"><span class="cite-bracket">[</span>2<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-_35b7757617abcf1f_3-0" class="reference"><a href="#cite_note-_35b7757617abcf1f-3"><span class="cite-bracket">[</span>3<span class="cite-bracket">]</span></a></sup></span></td>
</tr>
<tr>
<th scope="row" class="plainlist">Тип формата</th>
<td class="plainlist">
<span data-wikidata-property-id="P31" class="no-wikidata">Обмен данными</span></td>
</tr>
<tr>
<th scope="row" class="plainlist">Расширен из</th>
<td class="plainlist">
<span data-wikidata-claim-id="Q2063$5129f5e4-49a5-312c-4e43-7b586b6a3743" class="wikidata-claim" data-wikidata-property-id="P144"><span class="wikidata-snak wikidata-main-snak"><a href="JavaScript" title="JavaScript"><span lang="JavaScript">JavaScript</span></a></span></span></td>
</tr>
<tr>
<th scope="row" class="plainlist">Стандарт(ы)</th>
<td class="plainlist">
<a class="external mw-magiclink-rfc" rel="nofollow" href="https://datatracker.ietf.org/doc/html/rfc8259">RFC 8259</a></td>
</tr>
<tr>
<th scope="row" class="plainlist">Сайт</th>
<td class="plainlist">
<span data-wikidata-claim-id="Q2063$42fceac6-4c6a-599f-9a92-e406c8eecda1" class="wikidata-claim" data-wikidata-property-id="P856"><span class="wikidata-snak wikidata-main-snak"><a rel="nofollow" class="external text" href="https://json.org/">json.org</a>&nbsp;<span class="ref-info" title="на английском языке" style="cursor:help;">(англ.)</span></span></span></td>
</tr><tr><td colspan="2" class="infobox-below" style=";"><span data-wikidata-claim-id="Q2063$21246A5F-B1C6-4E0B-A809-01EBDDD6EEA7" class="wikidata-claim" data-wikidata-property-id="P373"><span class="wikidata-snak wikidata-main-snak"><span typeof="mw:File"><a href="https://commons.wikimedia.org/wiki/Category:JavaScript_Object_Notation" title="commons:Category:JavaScript Object Notation" class="external"><img alt="Логотип Викисклада" src="./_assets_/0c70a452f799bfe840676ee341124611/Commons-logo.svg.png" decoding="async" width="15" height="20" class="mw-file-element" data-file-width="1024" data-file-height="1376" loading="lazy"></a></span>&nbsp;<a href="https://commons.wikimedia.org/wiki/Category:JavaScript_Object_Notation" class="extiw external" title="commons:Category:JavaScript Object Notation">Медиафайлы на Викискладе</a></span></span></td></tr>
</tbody></table>
<p><b>JSON</b> (<a href="%D0%90%D0%BD%D0%B3%D0%BB%D0%B8%D0%B9%D1%81%D0%BA%D0%B8%D0%B9_%D1%8F%D0%B7%D1%8B%D0%BA" title="Английский язык">англ.</a>&nbsp;<span lang="en" style="font-style:italic;">JavaScript Object Notation</span>, в английском обычно произносится как <span class="nowrap"></span><span class="IPA nopopups"><span class="nowrap"><a href="%D0%A2%D0%B0%D0%B1%D0%BB%D0%B8%D1%86%D0%B0_%D0%9C%D0%A4%D0%90_%D0%B4%D0%BB%D1%8F_%D0%B0%D0%BD%D0%B3%D0%BB%D0%B8%D0%B9%D1%81%D0%BA%D0%BE%D0%B3%D0%BE_%D1%8F%D0%B7%D1%8B%D0%BA%D0%B0" title="Таблица МФА для английского языка">/<style data-mw-deduplicate="TemplateStyles:r113275842">
/* start https://ru.wikipedia.org/ */


'"`UNIQ--templatestyles-00000005-QINU`"'


/* end   https://ru.wikipedia.org/ */
</style><span class="ts-comment-commentedText" title="/ˈ/ следует основное ударение">ˈ</span><span class="ts-comment-commentedText" title="/dʒ/ 'j' в 'jam'">dʒ</span><span class="ts-comment-commentedText" title="/eɪ/ долгий 'a' в 'base'">eɪ</span><span class="ts-comment-commentedText" title="'s' в 'sigh'">s</span><span class="ts-comment-commentedText" title="/ən/ 'on' в 'button'">ən</span>/</a></span></span><sup id="cite_ref-Pronunciation_4-0" class="reference"><a href="#cite_note-Pronunciation-4"><span class="cite-bracket">[</span>4<span class="cite-bracket">]</span></a></sup>)&nbsp;— <a href="%D0%A2%D0%B5%D0%BA%D1%81%D1%82%D0%BE%D0%B2%D1%8B%D0%B9_%D1%84%D0%BE%D1%80%D0%BC%D0%B0%D1%82" class="mw-redirect" title="Текстовый формат">текстовый формат</a> <a href="%D0%9E%D0%B1%D0%BC%D0%B5%D0%BD_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D0%BC%D0%B8" class="mw-redirect" title="Обмен данными">обмена данными</a>, основанный на <a href="JavaScript" title="JavaScript">JavaScript</a>. Как и многие другие текстовые форматы, JSON легко читается людьми. Формат JSON был разработан <a href="%D0%9A%D1%80%D0%BE%D0%BA%D1%84%D0%BE%D1%80%D0%B4%2C_%D0%94%D1%83%D0%B3%D0%BB%D0%B0%D1%81" title="Крокфорд, Дуглас">Дугласом Крокфордом</a><sup id="cite_ref-5" class="reference"><a href="#cite_note-5"><span class="cite-bracket">[</span>5<span class="cite-bracket">]</span></a></sup>.
</p><p>Несмотря на происхождение от JavaScript (точнее, от подмножества языка стандарта <a href="ECMA-262" class="mw-redirect" title="ECMA-262">ECMA-262</a> <a href="1999_%D0%B3%D0%BE%D0%B4" title="1999 год">1999 года</a>), формат считается независимым от языка и может использоваться практически с любым <a href="%D0%AF%D0%B7%D1%8B%D0%BA_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F" title="Язык программирования">языком программирования</a>. Для многих языков существует готовый код для создания и обработки данных в формате JSON.
</p><p>Передаваемый текст должен быть в кодировке <a href="UTF-8" title="UTF-8">UTF-8</a> без <a href="%D0%9C%D0%B0%D1%80%D0%BA%D0%B5%D1%80_%D0%BF%D0%BE%D1%81%D0%BB%D0%B5%D0%B4%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D0%BE%D1%81%D1%82%D0%B8_%D0%B1%D0%B0%D0%B9%D1%82%D0%BE%D0%B2" title="Маркер последовательности байтов">BOM</a><sup id="cite_ref-6" class="reference"><a href="#cite_note-6"><span class="cite-bracket">[</span>6<span class="cite-bracket">]</span></a></sup>.
</p>

<div class="mw-heading mw-heading2"><h2 id="Использование"><span id=".D0.98.D1.81.D0.BF.D0.BE.D0.BB.D1.8C.D0.B7.D0.BE.D0.B2.D0.B0.D0.BD.D0.B8.D0.B5"></span>Использование</h2></div>
<p>За счёт своей лаконичности по сравнению с <a href="XML" title="XML">XML</a> формат JSON может быть более подходящим для <a href="%D0%A1%D0%B5%D1%80%D0%B8%D0%B0%D0%BB%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F" title="Сериализация">сериализации</a> сложных структур.
Применяется в веб-приложениях как для обмена данными между <a href="%D0%91%D1%80%D0%B0%D1%83%D0%B7%D0%B5%D1%80" title="Браузер">браузером</a> и сервером (<a href="AJAX" title="AJAX">AJAX</a>), так и между серверами (программные <a href="HTTP" title="HTTP">HTTP</a>-сопряжения).
</p><p>Поскольку формат JSON является подмножеством синтаксиса языка JavaScript, то он может быть быстро десериализован встроенной функцией <code>JSON.parse()</code>.
</p>
<div class="mw-heading mw-heading2"><h2 id="Синтаксис"><span id=".D0.A1.D0.B8.D0.BD.D1.82.D0.B0.D0.BA.D1.81.D0.B8.D1.81"></span>Синтаксис</h2></div>
<p>JSON-текст представляет собой (в закодированном виде) одну из двух структур:
</p>
<ul><li>Набор пар <i>ключ: значение</i>. В различных языках это реализовано как <a href="%D0%97%D0%B0%D0%BF%D0%B8%D1%81%D1%8C_(%D1%82%D0%B8%D0%BF_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85)" title="Запись (тип данных)">запись</a>, <a href="%D0%A1%D1%82%D1%80%D1%83%D0%BA%D1%82%D1%83%D1%80%D0%B0_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85" title="Структура данных">структура</a>, <a href="%D0%90%D1%81%D1%81%D0%BE%D1%86%D0%B8%D0%B0%D1%82%D0%B8%D0%B2%D0%BD%D1%8B%D0%B9_%D0%BC%D0%B0%D1%81%D1%81%D0%B8%D0%B2" title="Ассоциативный массив">словарь</a>, <a href="%D0%A5%D0%B5%D1%88-%D1%82%D0%B0%D0%B1%D0%BB%D0%B8%D1%86%D0%B0" title="Хеш-таблица">хеш-таблица</a>, <a href="%D0%A1%D0%BF%D0%B8%D1%81%D0%BE%D0%BA_(%D0%B8%D0%BD%D1%84%D0%BE%D1%80%D0%BC%D0%B0%D1%82%D0%B8%D0%BA%D0%B0)" title="Список (информатика)">список</a> с ключом или <a href="%D0%90%D1%81%D1%81%D0%BE%D1%86%D0%B8%D0%B0%D1%82%D0%B8%D0%B2%D0%BD%D1%8B%D0%B9_%D0%BC%D0%B0%D1%81%D1%81%D0%B8%D0%B2" title="Ассоциативный массив">ассоциативный массив</a>. Ключом может быть только строка (<a href="%D0%A7%D1%83%D0%B2%D1%81%D1%82%D0%B2%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D0%BE%D1%81%D1%82%D1%8C_%D0%BA_%D1%80%D0%B5%D0%B3%D0%B8%D1%81%D1%82%D1%80%D1%83_%D1%81%D0%B8%D0%BC%D0%B2%D0%BE%D0%BB%D0%BE%D0%B2" title="Чувствительность к регистру символов">регистрозависимость</a> не регулируется стандартом, это остаётся на усмотрение программного обеспечения. Как правило, регистр учитывается программами&nbsp;— имена с буквами в разных регистрах считаются разными, например<sup id="cite_ref-7" class="reference"><a href="#cite_note-7"><span class="cite-bracket">[</span>7<span class="cite-bracket">]</span></a></sup>), значением&nbsp;— любая форма. Повторяющиеся имена ключей допустимы, но не рекомендуются стандартом; обработка таких ситуаций происходит на усмотрение программного обеспечения, возможные варианты&nbsp;— учитывать только первый такой ключ, учитывать только последний такой ключ, генерировать ошибку.</li>
<li>Упорядоченный набор <i>значений</i>. Во многих языках это реализовано как <a href="%D0%9C%D0%B0%D1%81%D1%81%D0%B8%D0%B2_(%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5)" class="mw-redirect" title="Массив (программирование)">массив</a>, <a href="%D0%98%D0%BD%D0%B4%D0%B5%D0%BA%D1%81%D0%BD%D1%8B%D0%B9_%D0%BC%D0%B0%D1%81%D1%81%D0%B8%D0%B2" class="mw-redirect" title="Индексный массив">вектор</a>, список или <a href="%D0%9F%D0%BE%D1%81%D0%BB%D0%B5%D0%B4%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D0%BE%D1%81%D1%82%D1%8C" title="Последовательность">последовательность</a>.</li></ul>
<p>Структуры данных, используемые JSON, поддерживаются любым современным языком программирования, что и позволяет применять JSON для обмена данными между различными языками программирования и программными системами.
</p><p>В качестве значений в JSON могут быть использованы:
</p>
<ul><li><b>запись</b>&nbsp;— это неупорядоченное множество пар <b>ключ</b>:<b>значение</b>, заключённое в фигурные скобки <i>«</i>{ }<i>»</i>. Ключ описывается <b>строкой</b>, между ним и значением стоит символ <i>«</i>:<i>»</i>. Пары <i>ключ-значение</i> отделяются друг от друга запятыми.</li>
<li><b>массив</b> (одномерный)&nbsp;— это упорядоченное множество <b>значений</b>. Массив заключается в квадратные скобки <i>«</i>[ ]<i>»</i>. Значения разделяются запятыми. Массив может быть пустым, то есть не содержать ни одного значения. Значения в пределах одного массива могут иметь разный тип.</li>
<li><b>число</b> (целое или вещественное).</li>
<li><b>литералы</b> <i>true</i> (<a href="%D0%9B%D0%BE%D0%B3%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D0%B9_%D1%82%D0%B8%D0%BF" title="Логический тип">логическое значение</a> «истина»), <i>false</i> (<a href="%D0%9B%D0%BE%D0%B3%D0%B8%D1%87%D0%B5%D1%81%D0%BA%D0%B8%D0%B9_%D1%82%D0%B8%D0%BF" title="Логический тип">логическое значение</a> «ложь») и <i>null</i>.</li>
<li><b>строка</b>&nbsp;— это упорядоченное множество из нуля или более символов <a href="%D0%AE%D0%BD%D0%B8%D0%BA%D0%BE%D0%B4" title="Юникод">юникода</a>, заключённое в двойные кавычки. Символы могут быть указаны с использованием <a href="Escape-%D0%BF%D0%BE%D1%81%D0%BB%D0%B5%D0%B4%D0%BE%D0%B2%D0%B0%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D0%BE%D1%81%D1%82%D1%8C" class="mw-redirect" title="Escape-последовательность">escape-последовательностей</a>, начинающихся с <a href="%D0%9E%D0%B1%D1%80%D0%B0%D1%82%D0%BD%D0%B0%D1%8F_%D0%BA%D0%BE%D1%81%D0%B0%D1%8F_%D1%87%D0%B5%D1%80%D1%82%D0%B0" title="Обратная косая черта">обратной косой черты</a> <i>«\»</i> (поддерживаются варианты \", \\, \/, \t, \n, \r, \f и \b), или записаны шестнадцатеричным кодом в кодировке <a href="Unicode" class="mw-redirect" title="Unicode">Unicode</a> в виде \uFFFF.</li></ul>
<p><i>Строка</i> очень похожа на <a href="%D0%9B%D0%B8%D1%82%D0%B5%D1%80%D0%B0%D0%BB_(%D0%B8%D0%BD%D1%84%D0%BE%D1%80%D0%BC%D0%B0%D1%82%D0%B8%D0%BA%D0%B0)" title="Литерал (информатика)">литерал</a> одноимённого типа данных в языке <a href="JavaScript" title="JavaScript">JavaScript</a>. <i>Число</i> тоже очень похоже на JavaScript-число, за исключением того, что используется только <a href="%D0%94%D0%B5%D1%81%D1%8F%D1%82%D0%B8%D1%87%D0%BD%D0%B0%D1%8F_%D0%B4%D1%80%D0%BE%D0%B1%D1%8C" title="Десятичная дробь">десятичный формат</a> (с точкой в качестве разделителя). Пробелы могут быть вставлены между любыми двумя синтаксическими элементами.
</p><p>Следующий пример показывает JSON-представление данных об объекте, описывающем человека. В данных присутствуют <i>строковые</i> поля имени и фамилии, информация об адресе и массив, содержащий список телефонов. Как видно из примера, <i>значение</i> может представлять собой вложенную структуру.
</p>
<div class="mw-highlight mw-highlight-lang-json mw-content-ltr" dir="ltr"><pre><span></span><span class="p">{</span>
<span class="w">   </span><span class="nt">"firstName"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Иван"</span><span class="p">,</span>
<span class="w">   </span><span class="nt">"lastName"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Иванов"</span><span class="p">,</span>
<span class="w">   </span><span class="nt">"address"</span><span class="p">:</span><span class="w"> </span><span class="p">{</span>
<span class="w">       </span><span class="nt">"streetAddress"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Московское ш., 101, кв.101"</span><span class="p">,</span>
<span class="w">       </span><span class="nt">"city"</span><span class="p">:</span><span class="w"> </span><span class="s2">"Ленинград"</span><span class="p">,</span>
<span class="w">       </span><span class="nt">"postalCode"</span><span class="p">:</span><span class="w"> </span><span class="mi">101101</span>
<span class="w">   </span><span class="p">},</span>
<span class="w">   </span><span class="nt">"phoneNumbers"</span><span class="p">:</span><span class="w"> </span><span class="p">[</span>
<span class="w">       </span><span class="s2">"812 123-1234"</span><span class="p">,</span>
<span class="w">       </span><span class="s2">"916 123-4567"</span>
<span class="w">   </span><span class="p">]</span>
<span class="p">}</span>
</pre></div>
<p>В качестве значений в JSON могут быть использованы как числа, так и строки. Поэтому запись <code>"postalCode": "101101"</code> содержит строку, а <code>"postalCode": 101101</code>&nbsp;— уже числовое значение. Из-за <a href="%D0%A1%D0%B8%D0%BB%D1%8C%D0%BD%D0%B0%D1%8F_%D0%B8_%D1%81%D0%BB%D0%B0%D0%B1%D0%B0%D1%8F_%D1%82%D0%B8%D0%BF%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F" title="Сильная и слабая типизация">слабой типизации</a> в JavaScript и <a href="PHP" title="PHP">PHP</a> строка может быть <a href="%D0%9F%D1%80%D0%B8%D0%B2%D0%B5%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5_%D1%82%D0%B8%D0%BF%D0%B0" title="Приведение типа">приведена</a> к числу и не влиять на логику программы. Тем не менее, рекомендуется аккуратно обращаться с типом значения, так как JSON служит для межсистемного обмена.
</p><p>На языке XML подобная структура выглядела бы примерно так:
</p>
<div class="mw-highlight mw-highlight-lang-xml mw-content-ltr" dir="ltr"><pre><span></span><span class="nt">&lt;person&gt;</span>
<span class="w">  </span><span class="nt">&lt;firstName&gt;</span>Иван<span class="nt">&lt;/firstName&gt;</span>
<span class="w">  </span><span class="nt">&lt;lastName&gt;</span>Иванов<span class="nt">&lt;/lastName&gt;</span>
<span class="w">  </span><span class="nt">&lt;address&gt;</span>
<span class="w">    </span><span class="nt">&lt;streetAddress&gt;</span>Московское<span class="w"> </span>ш.,<span class="w"> </span>101,<span class="w"> </span>кв.101<span class="nt">&lt;/streetAddress&gt;</span>
<span class="w">    </span><span class="nt">&lt;city&gt;</span>Ленинград<span class="nt">&lt;/city&gt;</span>
<span class="w">    </span><span class="nt">&lt;postalCode&gt;</span>101101<span class="nt">&lt;/postalCode&gt;</span>
<span class="w">  </span><span class="nt">&lt;/address&gt;</span>
<span class="w">  </span><span class="nt">&lt;phoneNumbers&gt;</span>
<span class="w">    </span><span class="nt">&lt;phoneNumber&gt;</span>812<span class="w"> </span>123-1234<span class="nt">&lt;/phoneNumber&gt;</span>
<span class="w">    </span><span class="nt">&lt;phoneNumber&gt;</span>916<span class="w"> </span>123-4567<span class="nt">&lt;/phoneNumber&gt;</span>
<span class="w">  </span><span class="nt">&lt;/phoneNumbers&gt;</span>
<span class="nt">&lt;/person&gt;</span>
</pre></div>
<p>или так:
</p>
<div class="mw-highlight mw-highlight-lang-xml mw-content-ltr" dir="ltr"><pre><span></span><span class="nt">&lt;person</span><span class="w"> </span><span class="na">firstName=</span><span class="s">"Иван"</span><span class="w"> </span><span class="na">lastName=</span><span class="s">"Иванов"</span><span class="nt">&gt;</span>
<span class="w">  </span><span class="nt">&lt;address</span><span class="w"> </span><span class="na">streetAddress=</span><span class="s">"Московское ш., 101, кв.101"</span><span class="w"> </span><span class="na">city=</span><span class="s">"Ленинград"</span><span class="w"> </span><span class="na">postalCode=</span><span class="s">"101101"</span><span class="w"> </span><span class="nt">/&gt;</span>
<span class="w">  </span><span class="nt">&lt;phoneNumbers&gt;</span>
<span class="w">    </span><span class="nt">&lt;phoneNumber</span><span class="w"> </span><span class="na">value=</span><span class="s">"812 123-1234"</span><span class="nt">/&gt;</span>
<span class="w">    </span><span class="nt">&lt;phoneNumber</span><span class="w"> </span><span class="na">value=</span><span class="s">"916 123-4567"</span><span class="nt">/&gt;</span>
<span class="w">  </span><span class="nt">&lt;/phoneNumbers&gt;</span>
<span class="nt">&lt;/person&gt;</span>
</pre></div>
<div class="mw-heading mw-heading2"><h2 id="JSON5">JSON5</h2></div>
<p><b>JSON5</b>&nbsp;— предложенное расширение формата json в соответствии с синтаксисом ECMAScript 5, вызванное тем, что json используется не только для общения между программами, но и создаётся/редактируется вручную<sup id="cite_ref-8" class="reference"><a href="#cite_note-8"><span class="cite-bracket">[</span>8<span class="cite-bracket">]</span></a></sup>. Файл JSON5 всегда является корректным кодом <a href="ECMAScript" title="ECMAScript">ECMAScript</a> 5. JSON5 обратно совместим с JSON. Для некоторых языков программирования уже существуют парсеры json5<sup id="cite_ref-9" class="reference"><a href="#cite_note-9"><span class="cite-bracket">[</span>9<span class="cite-bracket">]</span></a></sup>.
</p><p>Некоторые нововведения:
</p>
<ul><li>Поддерживаются как однострочные <code>//</code>, так и многострочные <code>/* */</code> комментарии.</li>
<li>Записи и списки могут иметь запятую после последнего элемента (удобно при копировании элементов).</li>
<li>Ключи записей могут быть без кавычек, если они являются валидными идентификаторами ECMAScript 5.</li>
<li>Строки могут заключаться как в одинарные, так и в двойные кавычки.</li>
<li>Числа могут быть в шестнадцатеричном виде, начинаться или заканчиваться десятичной точкой, включать Infinity, -Infinity, NaN и -NaN, начинаться со знака +.</li></ul>
<div class="mw-heading mw-heading2"><h2 id="Сравнение_с_YAML"><span id=".D0.A1.D1.80.D0.B0.D0.B2.D0.BD.D0.B5.D0.BD.D0.B8.D0.B5_.D1.81_YAML"></span>Сравнение с YAML</h2></div>
<p>Как функционально, так и синтаксически JSON является подмножеством языка <a href="YAML" title="YAML">YAML</a>. В частности, спецификация YAML 1.2 указывает, что «любой файл в формате JSON является корректным файлом в формате YAML»<sup id="cite_ref-10" class="reference"><a href="#cite_note-10"><span class="cite-bracket">[</span>10<span class="cite-bracket">]</span></a></sup>. Наиболее распространённый <a href="%D0%9F%D0%B0%D1%80%D1%81%D0%B8%D0%BD%D0%B3" class="mw-redirect" title="Парсинг">парсер</a> YAML способен обрабатывать и JSON<sup id="cite_ref-11" class="reference"><a href="#cite_note-11"><span class="cite-bracket">[</span>11<span class="cite-bracket">]</span></a></sup>. Спецификация YAML до версии 1.2 не полностью покрывала JSON, в первую очередь из-за отсутствия родной поддержки <a href="UTF-32" title="UTF-32">UTF-32</a> в YAML, а также требования пробела после разделителя-запятой; кроме того, спецификация JSON включала комментарии в стиле /* */.
</p><p>Наиболее важным отличием YAML является набор расширений синтаксиса, которым нет аналогов в JSON:
</p>
<ul><li>поддержка <b>реляционных</b> данных: в YAML-документе можно ссылаться на якорь, встретившийся ранее в файле/потоке; таким образом можно выразить <a href="%D0%A0%D0%B5%D0%BA%D1%83%D1%80%D1%81%D0%B8%D1%8F#Данные" title="Рекурсия">рекурсивные структуры</a>.</li>
<li>поддержка <b>расширяемых</b> типов данных помимо <a href="%D0%9F%D1%80%D0%B8%D0%BC%D0%B8%D1%82%D0%B8%D0%B2%D0%BD%D1%8B%D0%B9_%D1%82%D0%B8%D0%BF" title="Примитивный тип">примитивов</a>: строк, чисел, логических значений и&nbsp;т.&nbsp;д.</li>
<li>поддержка <b>блочного</b> синтаксиса с отступами; он позволяет описать <a href="%D0%A1%D1%82%D1%80%D1%83%D0%BA%D1%82%D1%83%D1%80%D0%B0_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85" title="Структура данных">структурированные данные</a> без использования лишних символов: всевозможных скобок, кавычек и&nbsp;т.&nbsp;д.</li></ul>
<div class="mw-heading mw-heading2"><h2 id="JSON_Schema">JSON Schema</h2></div>
<p>JSON Schema&nbsp;— один из языков описания структуры JSON-документа. Использует синтаксис JSON. Базируется на концепциях <a href="XML_Schema" class="mw-redirect" title="XML Schema">XML Schema</a>, <a href="RELAX_NG" title="RELAX NG">RelaxNG</a>, Kwalify. JSON Schema&nbsp;— самоописательный язык: при его использовании для обработки данных и описания их допустимости могут использоваться одни и те же инструменты <a href="%D0%A1%D0%B5%D1%80%D0%B8%D0%B0%D0%BB%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F" title="Сериализация">сериализации</a>/<a href="%D0%94%D0%B5%D1%81%D0%B5%D1%80%D0%B8%D0%B0%D0%BB%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F" class="mw-redirect" title="Десериализация">десериализации</a><sup id="cite_ref-12" class="reference"><a href="#cite_note-12"><span class="cite-bracket">[</span>12<span class="cite-bracket">]</span></a></sup>.
</p>
<div class="mw-heading mw-heading2"><h2 id="Формат_JSON-LD_для_связанных_данных"><span id=".D0.A4.D0.BE.D1.80.D0.BC.D0.B0.D1.82_JSON-LD_.D0.B4.D0.BB.D1.8F_.D1.81.D0.B2.D1.8F.D0.B7.D0.B0.D0.BD.D0.BD.D1.8B.D1.85_.D0.B4.D0.B0.D0.BD.D0.BD.D1.8B.D1.85"></span>Формат JSON-LD для связанных данных</h2></div>
<div role="note" class="hatnote navigation-not-searchable ts-main"><style data-mw-deduplicate="TemplateStyles:r142002967">
/* start https://ru.wikipedia.org/ */


.mw-parser-output .ts-main a{font-weight:bold}.mw-parser-output .ts-main a.new,.mw-parser-output .ts-main a.extiw,.mw-parser-output .ts-main a.external{font-weight:normal}


/* end   https://ru.wikipedia.org/ */
</style>Основная статья: <a href="JSON-LD" title="JSON-LD">JSON-LD</a></div>
<p>Стандарт JSON не поддерживает <a href="%D0%A1%D1%81%D1%8B%D0%BB%D0%BA%D0%B0_(%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5)" title="Ссылка (программирование)">ссылки</a> на объекты, но желаемого результата можно достичь при помощи дополнительных соглашений. Рекомендацией <a href="W3C" class="mw-redirect" title="W3C">W3C</a> для связанных данных является <a href="JSON-LD" title="JSON-LD">JSON-LD</a>, в котором использована модель данных <a href="RDF" class="mw-redirect" title="RDF">RDF</a>. В JSON-LD к данным добавляется контекст (context), связывающий свойства объектов JSON-документа с <a href="%D0%9E%D0%BD%D1%82%D0%BE%D0%BB%D0%BE%D0%B3%D0%B8%D1%8F_(%D0%B8%D0%BD%D1%84%D0%BE%D1%80%D0%BC%D0%B0%D1%82%D0%B8%D0%BA%D0%B0)" title="Онтология (информатика)">элементами онтологий</a><sup id="cite_ref-13" class="reference"><a href="#cite_note-13"><span class="cite-bracket">[</span>13<span class="cite-bracket">]</span></a></sup>.
</p>
<div class="mw-heading mw-heading2"><h2 id="Использование_JSON_в_Ajax"><span id=".D0.98.D1.81.D0.BF.D0.BE.D0.BB.D1.8C.D0.B7.D0.BE.D0.B2.D0.B0.D0.BD.D0.B8.D0.B5_JSON_.D0.B2_Ajax"></span>Использование JSON в <a href="Ajax" class="mw-redirect" title="Ajax">Ajax</a></h2></div>
<p>Следующий пример Javascript-кода показывает, как браузер может использовать <a href="XMLHttpRequest" title="XMLHttpRequest">XMLHttpRequest</a>, чтобы запрашивать с сервера объект в формате JSON (серверная часть программы опущена; в ней должен быть размещён код, отправляющий данные в формате JSON-строки в ответ на запросы по <code>url</code>).
</p>
<div class="mw-highlight mw-highlight-lang-javascript mw-content-ltr" dir="ltr"><pre><span></span><span class="kd">var</span><span class="w"> </span><span class="nx">http_request</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="ow">new</span><span class="w"> </span><span class="nx">XMLHttpRequest</span><span class="p">();</span>
<span class="nx">http_request</span><span class="p">.</span><span class="nx">onreadystatechange</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="kd">function</span><span class="w"> </span><span class="p">()</span><span class="w"> </span><span class="p">{</span>
<span class="w">    </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="nx">http_request</span><span class="p">.</span><span class="nx">readyState</span><span class="w"> </span><span class="o">!==</span><span class="w"> </span><span class="mf">4</span><span class="p">)</span>
<span class="w">        </span><span class="k">return</span><span class="p">;</span>
<span class="w">        </span>
<span class="w">    </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="nx">http_request</span><span class="p">.</span><span class="nx">status</span><span class="w"> </span><span class="o">!==</span><span class="w"> </span><span class="mf">200</span><span class="p">)</span>
<span class="w">        </span><span class="k">throw</span><span class="w"> </span><span class="ow">new</span><span class="w"> </span><span class="ne">Error</span><span class="p">(</span><span class="s1">'request was defeated'</span><span class="p">);</span>
<span class="w">        </span>
<span class="w">    </span><span class="nx">do_something_with_object</span><span class="p">(</span><span class="nb">JSON</span><span class="p">.</span><span class="nx">parse</span><span class="p">(</span><span class="nx">http_request</span><span class="p">.</span><span class="nx">responseText</span><span class="p">));</span>
<span class="w">    </span><span class="nx">http_request</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="kc">null</span><span class="p">;</span>
<span class="p">};</span>
<span class="nx">http_request</span><span class="p">.</span><span class="nx">open</span><span class="p">(</span><span class="s2">"GET"</span><span class="p">,</span><span class="w"> </span><span class="nx">url</span><span class="p">,</span><span class="w"> </span><span class="kc">true</span><span class="p">);</span>
<span class="nx">http_request</span><span class="p">.</span><span class="nx">send</span><span class="p">(</span><span class="kc">null</span><span class="p">);</span>
</pre></div>
<p>Заметим, что данный пример применения <a href="XMLHttpRequest" title="XMLHttpRequest">XMLHttpRequest</a> не поддерживает <a href="Internet_Explorer" title="Internet Explorer">Internet Explorer</a> до версии 6 включительно, так что для них следует использовать несколько иной код. Возможности применения XMLHttpRequest ограничены из-за <a href="%D0%9F%D1%80%D0%B0%D0%B2%D0%B8%D0%BB%D0%BE_%D0%BE%D0%B3%D1%80%D0%B0%D0%BD%D0%B8%D1%87%D0%B5%D0%BD%D0%B8%D1%8F_%D0%B4%D0%BE%D0%BC%D0%B5%D0%BD%D0%B0" title="Правило ограничения домена">правила ограничения домена</a> (same origin policy): URL-ответ на запрос должен находиться в том же DNS-домене, что и сервер, на котором находится страница, запрашивающая ответ. В качестве альтернативы применяется подход <a href="JSONP" title="JSONP">JSONP</a>, включающий в себя использование закодированного вызова функции, передающегося между клиентом и сервером, чтобы клиент мог загружать закодированные в JSON данные со сторонних доменов, и уведомлять о завершении вызывающую сторону, хотя это приводит к некоторым рискам для безопасности и дополнительным требованиям к серверу.
</p><p>Как вариант, в коде страницы можно использовать элементы <code>&lt;iframe&gt;</code> для асинхронного запроса JSON-данных, или просто <code>&lt;form action="url_to_cgi_script"&gt;</code>. Эти подходы были распространены до появления широкой поддержки XMLHttpRequest.
</p><p>Также можно использовать для передачи JSON-данных динамические теги <code>&lt;script&gt;</code>. С помощью этого метода можно обойти <a href="%D0%9F%D1%80%D0%B0%D0%B2%D0%B8%D0%BB%D0%BE_%D0%BE%D0%B3%D1%80%D0%B0%D0%BD%D0%B8%D1%87%D0%B5%D0%BD%D0%B8%D1%8F_%D0%B4%D0%BE%D0%BC%D0%B5%D0%BD%D0%B0" title="Правило ограничения домена">правило ограничения домена</a> (same origin policy), но он приводит к появлению уязвимого кода. В качестве более безопасной альтернативы было предложено использовать <a rel="nofollow" class="external text" href="http://json.org/JSONRequest.html">JSONRequest</a>.
</p>
<div class="mw-heading mw-heading2"><h2 id="Вопросы_безопасности"><span id=".D0.92.D0.BE.D0.BF.D1.80.D0.BE.D1.81.D1.8B_.D0.B1.D0.B5.D0.B7.D0.BE.D0.BF.D0.B0.D1.81.D0.BD.D0.BE.D1.81.D1.82.D0.B8"></span>Вопросы безопасности</h2></div>
<p>Хотя JSON предназначен для передачи данных в сериализованном виде, его синтаксис соответствует синтаксису JavaScript и это создаёт ряд проблем безопасности. Зачастую для обработки данных, полученных от внешнего источника в формате JSON, к ним применяется функция <code>eval()</code> без какой-либо предварительной проверки.
</p>
<div class="mw-heading mw-heading3"><h3 id="JavaScript_eval()"><span id="JavaScript_eval.28.29"></span>JavaScript <code>eval()</code></h3></div>
<p>Поскольку JSON представляется синтаксически правильным фрагментом кода JavaScript, простейшим способом разбора JSON-данных в JavaScript-программе является использование встроенной в JavaScript функции <code>eval()</code>, которая предназначена для выполнения JavaScript-выражений. При этом подходе отпадает необходимость в использовании дополнительных парсеров.
</p><p>Техника использования <code>eval()</code> делает систему уязвимой, если источник используемых JSON-данных не является <span data-interwiki-lang="en" data-interwiki-article="Trusted system">доверенным</span>. В качестве таких данных может выступать вредоносный JavaScript код для атак класса <span data-interwiki-lang="en" data-interwiki-article="Code injection">Внедрение кода</span>. С помощью данной уязвимости возможно осуществлять кражу данных, подделку аутентификации.
</p><p>Была предложена новая функция <code>JSON.parse()</code>, способная обрабатывать только JSON-данные. Она была представлена в четвёртой версии стандарта <a href="ECMAScript" title="ECMAScript">ECMAScript</a> и описана в статье «JSON: Обезжиренная альтернатива XML»<sup id="cite_ref-14" class="reference"><a href="#cite_note-14"><span class="cite-bracket">[</span>14<span class="cite-bracket">]</span></a></sup>. В настоящее время она доступна как <a href="%D0%91%D0%B8%D0%B1%D0%BB%D0%B8%D0%BE%D1%82%D0%B5%D0%BA%D0%B0_JavaScript" title="Библиотека JavaScript">библиотека JavaScript</a><sup id="cite_ref-15" class="reference"><a href="#cite_note-15"><span class="cite-bracket">[</span>15<span class="cite-bracket">]</span></a></sup> и была включена в пятую редакцию ECMAScript.
</p>
<div class="mw-heading mw-heading3"><h3 id="Встроенный_JSON"><span id=".D0.92.D1.81.D1.82.D1.80.D0.BE.D0.B5.D0.BD.D0.BD.D1.8B.D0.B9_JSON"></span>Встроенный JSON</h3></div>
<p>Последние версии веб-браузеров имеют встроенную поддержку JSON и способны его обрабатывать.
</p>
<div class="mw-heading mw-heading3"><h3 id="Подделка_кроссдоменного_запроса"><span id=".D0.9F.D0.BE.D0.B4.D0.B4.D0.B5.D0.BB.D0.BA.D0.B0_.D0.BA.D1.80.D0.BE.D1.81.D1.81.D0.B4.D0.BE.D0.BC.D0.B5.D0.BD.D0.BD.D0.BE.D0.B3.D0.BE_.D0.B7.D0.B0.D0.BF.D1.80.D0.BE.D1.81.D0.B0"></span>Подделка кроссдоменного запроса</h3></div>
<style data-mw-deduplicate="TemplateStyles:r148513636">
/* start https://ru.wikipedia.org/ */


.mw-parser-output .ambox{align-items:center;border:1px solid var(--border-color-base,#a2a9b1);border-left:10px solid #36c;background:var(--background-color-neutral-subtle,#f8f9fa);box-sizing:border-box;display:flex;margin:0 10%}html body.mediawiki.skin-minerva .mw-parser-output .ambox{border-width:0 0 0 4px}.mw-parser-output .ambox+link+.ambox,.mw-parser-output .ambox+link+style+.ambox,.mw-parser-output .ambox+link+link+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+style+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+link+.ambox{margin-top:-1px}html body.mediawiki .mw-parser-output .ambox.mbox-small-left{margin:4px 1em 4px 0;overflow:hidden;width:238px;border-collapse:collapse;font-size:88%;line-height:1.25em}.mw-parser-output .ambox-speedy{border-left:10px solid var(--border-color-error,#b32424);background-color:var(--background-color-error-subtle,#fee7e6)}.mw-parser-output .ambox-delete{border-left:10px solid var(--border-color-error,#b32424)}.mw-parser-output .ambox-content{border-left:10px solid #f28500}.mw-parser-output .ambox-style{border-left:10px solid var(--color-warning,#edab00)}.mw-parser-output .ambox-good{border-left:10px solid #66cc44}.mw-parser-output .ambox-discussion{border-left:10px solid #339966}.mw-parser-output .ambox-merge{border-left:10px solid #9932cc}.mw-parser-output .ambox-move{border-left:10px solid #9932cc}.mw-parser-output .ambox-protection{border-left:10px solid #a2a9b1}.mw-parser-output .ambox .mbox-text{border:none;padding:0.25em 0.5em;width:100%}.mw-parser-output .ambox .mbox-image{border:none;padding:2px 0 2px 0.5em;text-align:center}.mw-parser-output .ambox .mbox-imageright{border:none;padding:2px 0.5em 2px 0;text-align:center}.mw-parser-output .ambox .mbox-empty-cell{border:none;padding:0;width:1px}.mw-parser-output .ambox .mbox-image-div{width:52px}.mw-parser-output .ambox .mbox-textsmall-div{font-size:90%}html.client-js body.skin-minerva .mw-parser-output .mbox-text-span{margin-left:23px!important}@media(max-width:1366px){.mw-parser-output .ambox{margin-left:6%;margin-right:6%}}@media(max-width:719px){.mw-parser-output .ambox{margin-left:0;margin-right:0}}


/* end   https://ru.wikipedia.org/ */
</style>
<p>Непродуманное использование JSON делает сайты уязвимыми для <a href="%D0%9F%D0%BE%D0%B4%D0%B4%D0%B5%D0%BB%D0%BA%D0%B0_%D0%BC%D0%B5%D0%B6%D1%81%D0%B0%D0%B9%D1%82%D0%BE%D0%B2%D1%8B%D1%85_%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D0%BE%D0%B2" class="mw-redirect" title="Подделка межсайтовых запросов">подделки межсайтовых запросов</a> (CSRF или XSRF)<sup id="cite_ref-16" class="reference"><a href="#cite_note-16"><span class="cite-bracket">[</span>16<span class="cite-bracket">]</span></a></sup>. Поскольку тег <a href="%D0%AD%D0%BB%D0%B5%D0%BC%D0%B5%D0%BD%D1%82%D1%8B_HTML" title="Элементы HTML"><code>&lt;script&gt;</code></a> допускает использование источника, не принадлежащего к тому же домену, что и использующий ресурс, это позволяет выполнять код под видом данных, представленных в формате JSON, в контексте произвольной страницы, что делает возможным <a href="%D0%9A%D0%BE%D0%BC%D0%BF%D1%80%D0%BE%D0%BC%D0%B5%D1%82%D0%B0%D1%86%D0%B8%D1%8F_(%D0%BA%D1%80%D0%B8%D0%BF%D1%82%D0%BE%D0%B3%D1%80%D0%B0%D1%84%D0%B8%D1%8F)" title="Компрометация (криптография)">компрометацию</a> паролей или другой конфиденциальной информации пользователей, прошедших авторизацию на другом сайте.
</p><p>Это представляется проблемой только в случае содержания в JSON-данных конфиденциальной информации, которая может быть компрометирована третьей стороной и если сервер рассчитывает на <span data-interwiki-lang="en" data-interwiki-article="Same origin policy">политику одного источника</span>, блокируя доступ к данным при обнаружении внешнего запроса. Это не является проблемой, если сервер определяет допустимость запроса, предоставляя данные только в случае его корректности. <a href="HTTP_cookie" class="mw-redirect" title="HTTP cookie">HTTP cookie</a> нельзя использовать для определения этого. Исключительное использование HTTP cookie используется <a href="%D0%9F%D0%BE%D0%B4%D0%B4%D0%B5%D0%BB%D0%BA%D0%B0_%D0%BC%D0%B5%D0%B6%D1%81%D0%B0%D0%B9%D1%82%D0%BE%D0%B2%D1%8B%D1%85_%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81%D0%BE%D0%B2" class="mw-redirect" title="Подделка межсайтовых запросов">подделкой межсайтовых запросов</a>.
</p>
<div class="mw-heading mw-heading2"><h2 id="JSONP_и_JSONPP"><span id="JSONP_.D0.B8_JSONPP"></span>JSONP и JSONPP</h2></div>
<p><a href="JSONP" title="JSONP">JSONP</a> (<a href="%D0%90%D0%BD%D0%B3%D0%BB%D0%B8%D0%B9%D1%81%D0%BA%D0%B8%D0%B9_%D1%8F%D0%B7%D1%8B%D0%BA" title="Английский язык">англ.</a>&nbsp;<span lang="en" style="font-style:italic;">JSON Padding</span>&nbsp;— «JSON с подкладкой») является расширением JSON, когда имя функции обратного вызова указывается в качестве входного аргумента.
</p><p>В основу технологии положен тот факт, что политика безопасности браузера не запрещает использовать тег <code>&lt;script type="text/javascript" src="…"&gt;&lt;/script&gt;</code> для обращения к серверам, отличным от сервера, с которого произошла загрузка страницы.
</p><p>Без использования технологии JSONP (то есть используя просто JSON кодирование данных) сервер может вернуть только данные. Например, так:
</p>
<div class="mw-highlight mw-highlight-lang-javascript mw-content-ltr" dir="ltr"><pre><span></span><span class="p">{</span><span class="s2">"paper"</span><span class="o">:</span><span class="w"> </span><span class="s2">"A4"</span><span class="p">,</span><span class="w"> </span><span class="s2">"count"</span><span class="o">:</span><span class="w"> </span><span class="mf">5</span><span class="p">}</span>
</pre></div>
<p>Однако это только данные, и они не могут влиять на браузер.
</p><p>Используя технику JSONP, стороннему серверу передаётся в строке вызова (GET) имя callback функции:
</p>
<pre>&lt;script type="text/javascript" src="http://example.com/getjson?jsonp=parseResponse"&gt;&lt;/script&gt;</pre>
<p>Здесь параметр jsonp содержит имя callback функции parseResponse.
</p><p>Теперь посторонний сервер example.com может вернуть следующий код:
</p>
<div class="mw-highlight mw-highlight-lang-javascript mw-content-ltr" dir="ltr"><pre><span></span><span class="nx">parseResponse</span><span class="p">({</span><span class="s2">"paper"</span><span class="o">:</span><span class="w"> </span><span class="s2">"A4"</span><span class="p">,</span><span class="w"> </span><span class="s2">"count"</span><span class="o">:</span><span class="w"> </span><span class="mf">5</span><span class="p">})</span>
</pre></div>
<p>Теперь код вызывает javascript-функцию первого домена.
</p><p>Первоначально идея была предложена в блоге MacPython в 2005 году<sup id="cite_ref-17" class="reference"><a href="#cite_note-17"><span class="cite-bracket">[</span>17<span class="cite-bracket">]</span></a></sup> и в настоящее время используется многими <a href="Web_2.0" class="mw-redirect" title="Web 2.0">Web 2.0</a> приложениями, такими, как <a href="Dojo" title="Dojo">Dojo Toolkit</a> Applications, Google Toolkit Applications [<a rel="nofollow" class="external free" href="https://www.webcitation.org/6Djo88laj?url=http://www.gwtapps.com/?p=42%5d">https://www.webcitation.org/6Djo88laj?url=http://www.gwtapps.com/?p=42%5d</a> и zanox Web Services. Дальнейшие расширения этого протокола были предложены с учётом ввода дополнительных аргументов, как, например, в случае JSONPP<sup id="cite_ref-18" class="reference"><a href="#cite_note-18"><span class="cite-bracket">[</span>18<span class="cite-bracket">]</span></a></sup> при поддержке S3DB веб-сервисов.
</p><p>Поскольку JSONP использует скрипт теги, вызовы по сути открыты миру. По этой причине JSONP может быть неуместными для хранения конфиденциальных данных<sup id="cite_ref-RIAspot_19-0" class="reference"><a href="#cite_note-RIAspot-19"><span class="cite-bracket">[</span>19<span class="cite-bracket">]</span></a></sup>.
</p><p>Включение скриптовых тегов от удалённых сайтов позволяет им передать любой контент на сайте. Если удалённый сайт имеет уязвимости, которые позволяют выполнить Javascript инъекции, то исходный сайт также может быть затронут ими.
</p><p><b>JSONPP</b> (<a href="%D0%90%D0%BD%D0%B3%D0%BB%D0%B8%D0%B9%D1%81%D0%BA%D0%B8%D0%B9_%D1%8F%D0%B7%D1%8B%D0%BA" title="Английский язык">англ.</a>&nbsp;<span lang="en" style="font-style:italic;">parameterized JSON with padding</span>&nbsp;— «параметризованный JSON с подкладкой»)&nbsp;— развитие идеи JSONP.
</p><p>JSONPP включает в себя URL источника, имя функции, которая будет обрабатывать JSON данные, строка для eval после получения данных и строка для eval после окончания обработки данных:
</p>
<div class="mw-highlight mw-highlight-lang-javascript mw-content-ltr" dir="ltr"><pre><span></span><span class="nx">JSON_call</span><span class="p">(</span><span class="nx">SRC</span><span class="p">,</span><span class="nx">JSONP</span><span class="p">,</span><span class="nx">JSONPP</span><span class="p">,</span><span class="nx">ONLOAD</span><span class="p">);</span>
</pre></div><p> в итоге оборачивается
</p><div class="mw-highlight mw-highlight-lang-javascript mw-content-ltr" dir="ltr"><pre><span></span><span class="nx">ans</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">JSONP</span><span class="p">(</span><span class="nx">SRC</span><span class="p">)</span>
<span class="p">{</span>
<span class="w">    </span><span class="nb">eval</span><span class="p">(</span><span class="nx">JSONPP</span><span class="p">(</span><span class="nx">ans</span><span class="p">));</span>
<span class="w">    </span><span class="nb">eval</span><span class="p">(</span><span class="nx">ONLOAD</span><span class="p">);</span>
<span class="p">}</span>
</pre></div>
<p>Вообще, для самой идеи JSONPP не принципиально количество параметров. Достаточно SRC, JSONP, JSONPP (и их обработка на стороне сервера, а затем клиента) для того, чтобы это был JSONPP.
</p><p>Рассмотрим на примере работы с сервисом S3DB.
</p>
<div class="mw-highlight mw-highlight-lang-javascript mw-content-ltr" dir="ltr"><pre><span></span><span class="kd">function</span><span class="w"> </span><span class="nx">s3db_jsonpp_call</span><span class="p">(</span><span class="nx">src</span><span class="p">,</span><span class="w"> </span><span class="nx">next_eval</span><span class="p">){</span>
<span class="w">	</span><span class="kd">var</span><span class="w"> </span><span class="nx">call</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s2">"call_"</span><span class="o">+</span><span class="nb">Math</span><span class="p">.</span><span class="nx">random</span><span class="p">().</span><span class="nx">toString</span><span class="p">().</span><span class="nx">replace</span><span class="p">(</span><span class="sr">/\./g</span><span class="p">,</span><span class="s2">""</span><span class="p">);</span>
<span class="w">	</span><span class="kd">var</span><span class="w"> </span><span class="nx">headID</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">document</span><span class="p">.</span><span class="nx">getElementsByTagName</span><span class="p">(</span><span class="s2">"head"</span><span class="p">)[</span><span class="mf">0</span><span class="p">];</span>
<span class="w">	</span><span class="kd">var</span><span class="w"> </span><span class="nx">script</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">document</span><span class="p">.</span><span class="nx">createElement</span><span class="p">(</span><span class="s1">'script'</span><span class="p">);</span>
<span class="w">	</span><span class="nx">script</span><span class="p">.</span><span class="nx">id</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">call</span><span class="p">;</span>
<span class="w">	</span><span class="nx">script</span><span class="p">.</span><span class="nx">type</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s1">'text/javascript'</span><span class="p">;</span>
<span class="w">	</span><span class="c1">// using padded, parameterized json</span>
<span class="w">	</span><span class="nx">src</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">src</span><span class="o">+</span><span class="s2">"&amp;format=json&amp;jsonp=s3db_jsonpp&amp;jsonpp="</span><span class="o">+</span><span class="nx">next_eval</span><span class="o">+</span><span class="s2">"&amp;onload=remove_element_by_id('"</span><span class="o">+</span><span class="nx">script</span><span class="p">.</span><span class="nx">id</span><span class="o">+</span><span class="s2">"')"</span><span class="p">;</span>
<span class="w">	</span><span class="nx">script</span><span class="p">.</span><span class="nx">src</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nx">src</span><span class="p">;</span>
<span class="w">	</span><span class="nx">headID</span><span class="p">.</span><span class="nx">appendChild</span><span class="p">(</span><span class="nx">script</span><span class="p">);</span><span class="w"> </span><span class="c1">// retrieve answer</span>
<span class="p">}</span>
<span class="kd">function</span><span class="w"> </span><span class="nx">s3db_jsonpp</span><span class="p">(</span><span class="nx">ans</span><span class="p">,</span><span class="w"> </span><span class="nx">jsonpp</span><span class="p">){</span>
<span class="w">	</span><span class="nb">eval</span><span class="p">(</span><span class="nx">jsonpp</span><span class="p">);</span>
<span class="w">	</span><span class="k">return</span><span class="w"> </span><span class="nx">ans</span><span class="p">;</span>
<span class="p">}</span>
<span class="kd">function</span><span class="w"> </span><span class="nx">remove_element_by_id</span><span class="p">(</span><span class="nx">id</span><span class="p">){</span>
<span class="w">	</span><span class="kd">var</span><span class="w"> </span><span class="nx">e</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">document</span><span class="p">.</span><span class="nx">getElementById</span><span class="p">(</span><span class="nx">id</span><span class="p">);</span>
<span class="w">	</span><span class="nx">e</span><span class="p">.</span><span class="nx">parentNode</span><span class="p">.</span><span class="nx">removeChild</span><span class="p">(</span><span class="nx">e</span><span class="p">);</span>
<span class="w">	</span><span class="k">return</span><span class="w"> </span><span class="kc">false</span><span class="p">;</span>
<span class="p">}</span>
</pre></div>
<p>В примере функция <code>s3db_jsonpp_call()</code> создаёт в DOM в части head элемент script, src которого соответствует вызову JSONPP.
</p><p>После получения ответа от сервера будет вызвана <code>s3db_jsonpp()</code>&nbsp;— она передана в параметрах вызова, как это должно быть по правилам JSONP.
</p><p>Внутри <code>s3db_jsonpp()</code> сработает <code>eval(jsonpp)</code>, и произойдёт возврат значения ans.
</p><p>Вызов eval(onload) приводит к выполнению <code>remove_element_by_id()</code> с id созданного скрипта в head и в итоге к его удалению, ведь он уже всё равно не будет использоваться, поскольку id в примере было сгенерировано случайным образом в самом начале функции <code>s3db_jsonpp_call()</code>. Этот вызов в ответе сервера.
</p>
<div class="mw-heading mw-heading2"><h2 id="JSONB">JSONB</h2></div>
<p>JSONB&nbsp;— бинарное расширение JSON, внедрённое в СУБД <a href="PostgreSQL" title="PostgreSQL">PostgreSQL</a> в версии 9.4.18. Фактически, JSONB является бинарным представлением JSON<sup id="cite_ref-20" class="reference"><a href="#cite_note-20"><span class="cite-bracket">[</span>20<span class="cite-bracket">]</span></a></sup>, с тем различием, что в хранимых строках пробелы удаляются, сортировка объектов не сохраняется и сохраняется только последнее значение для ключей-дубликатов<sup id="cite_ref-21" class="reference"><a href="#cite_note-21"><span class="cite-bracket">[</span>21<span class="cite-bracket">]</span></a></sup>.
</p>
<div class="mw-heading mw-heading2"><h2 id="См._также"><span id=".D0.A1.D0.BC._.D1.82.D0.B0.D0.BA.D0.B6.D0.B5"></span>См. также</h2></div>
<ul><li><a href="BSON" title="BSON">BSON</a></li>
<li><a href="YAML" title="YAML">YAML</a></li>
<li><a href="JSON-LD" title="JSON-LD">JSON-LD</a></li>
<li><a href="JSONP" title="JSONP">JSONP</a></li></ul>
<div class="mw-heading mw-heading2"><h2 id="Примечания"><span id=".D0.9F.D1.80.D0.B8.D0.BC.D0.B5.D1.87.D0.B0.D0.BD.D0.B8.D1.8F"></span>Примечания</h2></div>
<div class="reflist columns" style="list-style-type: decimal;">
<div class="mw-references-wrap mw-references-columns"><ol class="references">
<li id="cite_note-_70357e99dab3e19f-1"><span class="mw-cite-backlink"><a href="#cite_ref-_70357e99dab3e19f_1-0">↑</a></span> <span class="reference-text"><a rel="nofollow" class="external text" href="https://www.file-extension.info/format/json">https://www.file-extension.info/format/json</a><span class="wef_low_priority_links"></span></span>
</li>
<li id="cite_note-_74633f2fcf22fde7-2"><span class="mw-cite-backlink"><a href="#cite_ref-_74633f2fcf22fde7_2-0">↑</a></span> <span class="reference-text"><span class="wikidata_cite citetype_Q212971" data-entity-id="Q47459805"><i class="wef_low_priority_links">Crockford&nbsp;D.</i> <a rel="nofollow" class="external text" href="https://tools.ietf.org/html/rfc4627">The application/json Media Type for JavaScript Object Notation (JSON)</a>&nbsp;<span class="ref-info" title="на английском языке" style="cursor:help;">(англ.)</span><span class="wef_low_priority_links"> — <a href="%D0%98%D0%BD%D0%B6%D0%B5%D0%BD%D0%B5%D1%80%D0%BD%D1%8B%D0%B9_%D1%81%D0%BE%D0%B2%D0%B5%D1%82_%D0%98%D0%BD%D1%82%D0%B5%D1%80%D0%BD%D0%B5%D1%82%D0%B0" title="Инженерный совет Интернета">IETF</a>, 2006. — 10&nbsp;p. — <a rel="nofollow" class="external text" href="https://dx.doi.org/10.17487/RFC4627">doi:10.17487/RFC4627</a></span></span></span>
</li>
<li id="cite_note-_35b7757617abcf1f-3"><span class="mw-cite-backlink"><a href="#cite_ref-_35b7757617abcf1f_3-0">↑</a></span> <span class="reference-text"><a rel="nofollow" class="external text" href="https://www.iana.org/assignments/media-types/application/json">https://www.iana.org/assignments/media-types/application/json</a><span class="wef_low_priority_links"></span></span>
</li>
<li id="cite_note-Pronunciation-4"><span class="mw-cite-backlink"><a href="#cite_ref-Pronunciation_4-0">↑</a></span> <span class="reference-text"><span class="citation"><span lang="und"><a rel="nofollow" class="external text" href="https://www.youtube.com/watch?v=hQVTIJBZook&amp;t=2405">Doug Crockford "Google Tech Talks: JavaScript: The Good Parts"</a></span><span class="hidden-ref" style="display:none;">&nbsp;</span> (7 февраля 2009). Дата обращения: 28 сентября 2017. <a rel="nofollow" class="external text" href="https://web.archive.org/web/20170729144422/https://www.youtube.com/watch?v=hQVTIJBZook&amp;t=2405">Архивировано</a> 29 июля 2017 года.</span></span>
</li>
<li id="cite_note-5"><span class="mw-cite-backlink"><a href="#cite_ref-5">↑</a></span> <span class="reference-text"><span class="citation"><span lang="und"><a rel="nofollow" class="external text" href="https://www.tbray.org/ongoing/When/201x/2014/03/05/RFC7159-JSON">JSON Redux AKA RFC7159</a></span><span class="hidden-ref" style="display:none;">&nbsp;</span>. Дата обращения: 12 сентября 2014. <a rel="nofollow" class="external text" href="https://web.archive.org/web/20140702215852/https://www.tbray.org/ongoing/When/201x/2014/03/05/RFC7159-JSON">Архивировано</a> 2 июля 2014 года.</span></span>
</li>
<li id="cite_note-6"><span class="mw-cite-backlink"><a href="#cite_ref-6">↑</a></span> <span class="reference-text"><span class="citation"><span lang="und"><a rel="nofollow" class="external text" href="https://datatracker.ietf.org/doc/html/rfc8259#section-8.1">RFC 8259, раздел 8.1 "String and Character Issues / Character Encoding"</a></span><span class="hidden-ref" style="display:none;">&nbsp;</span>. Дата обращения: 10 апреля 2024. <a rel="nofollow" class="external text" href="https://web.archive.org/web/20240410012307/https://datatracker.ietf.org/doc/html/rfc8259#section-8.1">Архивировано</a> 10 апреля 2024 года.</span></span>
</li>
<li id="cite_note-7"><span class="mw-cite-backlink"><a href="#cite_ref-7">↑</a></span> <span class="reference-text"><span class="citation"><span lang="und"><a rel="nofollow" class="external text" href="http://jsonrpc.org/historical/json-rpc-1-1-alt.html#service-procedure-and-parameter-names">JSON-RPC 1.1 Alt: Service, Procedure and Parameter Names</a></span><span class="hidden-ref" style="display:none;">&nbsp;</span>. Дата обращения: 28 апреля 2016. <a rel="nofollow" class="external text" href="https://web.archive.org/web/20160309023417/http://jsonrpc.org/historical/json-rpc-1-1-alt.html#service-procedure-and-parameter-names">Архивировано</a> 9 марта 2016 года.</span></span>
</li>
<li id="cite_note-8"><span class="mw-cite-backlink"><a href="#cite_ref-8">↑</a></span> <span class="reference-text"><span class="citation"><span lang="und"><a rel="nofollow" class="external text" href="http://json5.org/">JSON5 by aseemk</a></span><span class="hidden-ref" style="display:none;">&nbsp;</span>. Дата обращения: 26 ноября 2015. <a rel="nofollow" class="external text" href="https://web.archive.org/web/20151211231443/http://json5.org/">Архивировано</a> 11 декабря 2015 года.</span></span>
</li>
<li id="cite_note-9"><span class="mw-cite-backlink"><a href="#cite_ref-9">↑</a></span> <span class="reference-text"><span class="citation"><span lang="und"><a rel="nofollow" class="external text" href="https://github.com/json5/json5/wiki/In-The-Wild">In The Wild · json5/json5 Wiki · GitHub</a></span><span class="hidden-ref" style="display:none;">&nbsp;</span>. Дата обращения: 27 января 2017. <a rel="nofollow" class="external text" href="https://web.archive.org/web/20201205050150/https://github.com/json5/json5/wiki/In-The-Wild">Архивировано</a> 5 декабря 2020 года.</span></span>
</li>
<li id="cite_note-10"><span class="mw-cite-backlink"><a href="#cite_ref-10">↑</a></span> <span class="reference-text"><span class="citation"><span lang="en"><a rel="nofollow" class="external text" href="http://yaml.org/spec/1.2/#id2560236">YAML Ain’t Markup Language (YAML™) Version 1.2</a></span>&nbsp;<span class="ref-info" title="на английском языке" style="cursor:help;">(англ.)</span>.&nbsp;— Working Draft 2008-05-11. Дата обращения: 24 сентября 2009. <a rel="nofollow" class="external text" href="https://web.archive.org/web/20080516232502/http://yaml.org/spec/1.2/#id2560236">Архивировано</a> 16 мая 2008 года.</span></span>
</li>
<li id="cite_note-11"><span class="mw-cite-backlink"><a href="#cite_ref-11">↑</a></span> <span class="reference-text"><span class="citation"><span lang="und"><a rel="nofollow" class="external text" href="http://viewsourcecode.org/why/redhanded/inspect/yamlIsJson.html">YAML is JSON</a></span><span class="hidden-ref" style="display:none;">&nbsp;</span>. RedHanded (7 апреля 2005). Дата обращения: 25 сентября 2012. <a rel="nofollow" class="external text" href="https://web.archive.org/web/20121207062417/http://viewsourcecode.org/why/redhanded/inspect/yamlIsJson.html">Архивировано</a> 7 декабря 2012 года.</span>.</span>
</li>
<li id="cite_note-12"><span class="mw-cite-backlink"><a href="#cite_ref-12">↑</a></span> <span class="reference-text"><span class="citation"><i>Json.Com.</i> <span lang="en"><a rel="nofollow" class="external text" href="https://web.archive.org/web/20080514105937/http://www.json.com/json-schema-proposal/">JSON Schema Proposal</a></span>&nbsp;<span class="ref-info" title="на английском языке" style="cursor:help;">(англ.)</span>. Архивировано из <a rel="nofollow" class="external text" href="http://www.json.com/json-schema-proposal/">оригинала</a> 14 мая 2008 года.</span></span>
</li>
<li id="cite_note-13"><span class="mw-cite-backlink"><a href="#cite_ref-13">↑</a></span> <span class="reference-text"><span class="citation"><span lang="und"><a rel="nofollow" class="external text" href="http://json-ld.org/spec/latest/json-ld-syntax/">JSON-LD Syntax 1.0</a></span><span class="hidden-ref" style="display:none;">&nbsp;</span> (27 декабря 2011). Дата обращения: 30 декабря 2011. <a rel="nofollow" class="external text" href="https://web.archive.org/web/20120112090803/http://json-ld.org/spec/latest/json-ld-syntax/">Архивировано</a> 12 января 2012 года.</span></span>
</li>
<li id="cite_note-14"><span class="mw-cite-backlink"><a href="#cite_ref-14">↑</a></span> <span class="reference-text"><span class="citation"><span lang="en"><a rel="nofollow" class="external text" href="http://www.json.org/fatfree.html">JSON: Обезжиренная альтернатива XML</a></span>&nbsp;<span class="ref-info" title="на английском языке" style="cursor:help;">(англ.)</span>. <a rel="nofollow" class="external text" href="https://www.webcitation.org/65OHt7Ehp?url=http://www.json.org/fatfree.html">Архивировано</a> 12 февраля 2012 года.</span></span>
</li>
<li id="cite_note-15"><span class="mw-cite-backlink"><a href="#cite_ref-15">↑</a></span> <span class="reference-text"><span class="citation"><span lang="en"><a rel="nofollow" class="external text" href="http://www.JSON.org/json2.js">json2.js</a></span>&nbsp;<span class="ref-info" title="на английском языке" style="cursor:help;">(англ.)</span>. Дата обращения: 24 сентября 2009. <a rel="nofollow" class="external text" href="https://www.webcitation.org/65OHtd8Qw?url=http://www.json.org/json2.js">Архивировано</a> 12 февраля 2012 года.</span></span>
</li>
<li id="cite_note-16"><span class="mw-cite-backlink"><a href="#cite_ref-16">↑</a></span> <span class="reference-text"><span class="citation"><i>Джереми Гроссмэн.</i> <span lang="en"><a rel="nofollow" class="external text" href="http://jeremiahgrossman.blogspot.com/2006/01/advanced-web-attack-techniques-using.html">Продвинутые техники атак на веб-приложения, использующие GMail</a></span>&nbsp;<span class="ref-info" title="на английском языке" style="cursor:help;">(англ.)</span>. WhiteHat Security. Дата обращения: 23 сентября 2009. <a rel="nofollow" class="external text" href="https://www.webcitation.org/65OHyb8Xy?url=http://jeremiahgrossman.blogspot.com/2006/01/advanced-web-attack-techniques-using.html">Архивировано</a> 12 февраля 2012 года.</span></span>
</li>
<li id="cite_note-17"><span class="mw-cite-backlink"><a href="#cite_ref-17">↑</a></span> <span class="reference-text"><span class="citation"><span lang="und"><a rel="nofollow" class="external text" href="http://bob.pythonmac.org/archives/2005/12/05/remote-json-jsonp/">from __future__ import *&nbsp;» Remote JSON - JSONP</a></span><span class="hidden-ref" style="display:none;">&nbsp;</span>. Bob.pythonmac.org. Дата обращения: 8 сентября 2008. <a rel="nofollow" class="external text" href="https://www.webcitation.org/65OHzF7n5?url=http://bob.pythonmac.org/archives/2005/12/05/remote-json-jsonp/">Архивировано</a> 12 февраля 2012 года.</span></span>
</li>
<li id="cite_note-18"><span class="mw-cite-backlink"><a href="#cite_ref-18">↑</a></span> <span class="reference-text"><span class="citation"><i>Almeida, Jonas.</i> <a rel="nofollow" class="external text" href="https://sites.google.com/a/s3db.org/s3db/documentation/mis/json-jsonp-jsonpp">JSON, JSONP, JSONPP?</a>.&nbsp;— S3DB, 2008.&nbsp;— 11 июня. <a rel="nofollow" class="external text" href="https://web.archive.org/web/20170215022544/https://sites.google.com/a/s3db.org/s3db/documentation/mis/json-jsonp-jsonpp">Архивировано</a> 15&nbsp;февраля 2017&nbsp;года.</span></span>
</li>
<li id="cite_note-RIAspot-19"><span class="mw-cite-backlink"><a href="#cite_ref-RIAspot_19-0">↑</a></span> <span class="reference-text"><span class="citation"><i>RIAspot.</i> <span lang="und"><a rel="nofollow" class="external text" href="http://www.riaspot.com/blogs/entry/JSONP-for-Cross-Site-XHR">JSON P for Cross Site XHR</a></span><span class="hidden-ref" style="display:none;">&nbsp;</span>. <a rel="nofollow" class="external text" href="https://web.archive.org/web/20081205002754/http://www.riaspot.com/blogs/entry/JSONP-for-Cross-Site-XHR">Архивировано</a> 5 декабря 2008 года.</span></span>
</li>
<li id="cite_note-20"><span class="mw-cite-backlink"><a href="#cite_ref-20">↑</a></span> <span class="reference-text"><style data-mw-deduplicate="TemplateStyles:r150646110">
/* start https://ru.wikipedia.org/ */


.mw-parser-output cite.citation{font-style:inherit;word-wrap:break-word}.mw-parser-output .citation q{quotes:"«""»""„""“"}.mw-parser-output .citation:target{background-color:rgba(0,127,255,0.133)}.mw-parser-output .id-lock-free a::after,.mw-parser-output .id-lock-limited a::after,.mw-parser-output .id-lock-registration a::after,.mw-parser-output .id-lock-subscription a::after,.mw-parser-output .cs1-ws-icon a::after{content:"";width:1.1em;height:1.1em;display:inline-block;vertical-align:middle;background-position:center;background-repeat:no-repeat;background-size:contain}.mw-parser-output .id-lock-free.id-lock-free a::after{background-image:url("./_mw_/Lock-green.svg")}.mw-parser-output .id-lock-limited.id-lock-limited a::after,.mw-parser-output .id-lock-registration.id-lock-registration a::after{background-image:url("./_mw_/Lock-gray-alt-2.svg")}.mw-parser-output .id-lock-subscription.id-lock-subscription a::after{background-image:url("./_mw_/Lock-red-alt-2.svg")}.mw-parser-output .cs1-ws-icon a::after{background-image:url("./_mw_/Wikisource-logo.svg")}.mw-parser-output .cs1-code{color:inherit;background:inherit;border:none;padding:inherit}.mw-parser-output .cs1-hidden-error{display:none;color:var(--color-error,#d33)}.mw-parser-output .cs1-visible-error{color:var(--color-error,#d33)}.mw-parser-output .cs1-maint{display:none;color:#085;margin-left:0.3em}.mw-parser-output .cs1-kern-left{padding-left:0.2em}.mw-parser-output .cs1-kern-right{padding-right:0.2em}.mw-parser-output .citation .mw-selflink{font-weight:inherit}@media screen{.mw-parser-output .cs1-format{font-size:95%}html.skin-theme-clientpref-night .mw-parser-output .cs1-maint{color:#18911f}html.skin-theme-clientpref-night .mw-parser-output .id-lock-free a::after,html.skin-theme-clientpref-night .mw-parser-output .id-lock-limited a::after,html.skin-theme-clientpref-night .mw-parser-output .id-lock-registration a::after,html.skin-theme-clientpref-night .mw-parser-output .id-lock-subscription a::after{filter:invert(1)hue-rotate(180deg)}}@media screen and (prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .cs1-maint{color:#18911f}html.skin-theme-clientpref-os .mw-parser-output .id-lock-free a::after,html.skin-theme-clientpref-os .mw-parser-output .id-lock-limited a::after,html.skin-theme-clientpref-os .mw-parser-output .id-lock-registration a::after,html.skin-theme-clientpref-os .mw-parser-output .id-lock-subscription a::after{filter:invert(1)hue-rotate(180deg)}}


/* end   https://ru.wikipedia.org/ */
</style><cite class="citation news cs1"><a rel="nofollow" class="external text" href="https://habr.com/post/306602/">Когда использовать неструктурированные типы данных в PostgreSQL? Сравнение Hstore vs. JSON vs. JSONB</a>. 29 июля 2016. <a rel="nofollow" class="external text" href="https://web.archive.org/web/20180704035230/https://habr.com/post/306602/">Архивировано</a> 4 июля 2018<span class="reference-accessdate">. Дата обращения: 4 июля 2018</span>.</cite><span title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&amp;rft.genre=article&amp;rft.atitle=%D0%9A%D0%BE%D0%B3%D0%B4%D0%B0+%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D1%82%D1%8C+%D0%BD%D0%B5%D1%81%D1%82%D1%80%D1%83%D0%BA%D1%82%D1%83%D1%80%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%BD%D1%8B%D0%B5+%D1%82%D0%B8%D0%BF%D1%8B+%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85+%D0%B2+PostgreSQL%3F+%D0%A1%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B5+Hstore+vs.+JSON+vs.+JSONB&amp;rft.date=2016-07-29&amp;rft_id=https%3A%2F%2Fhabr.com%2Fpost%2F306602%2F&amp;rfr_id=info%3Asid%2Fru.wikipedia.org%3AJSON" class="Z3988"></span></span>
</li>
<li id="cite_note-21"><span class="mw-cite-backlink"><a href="#cite_ref-21">↑</a></span> <span class="reference-text"><cite class="citation news cs1"><a rel="nofollow" class="external text" href="https://habr.com/post/282764/">Чем PostgreSQL лучше других SQL баз данных с открытым исходным кодом. Часть 1</a>. 29 апреля 2016. <a rel="nofollow" class="external text" href="https://web.archive.org/web/20180704035529/https://habr.com/post/282764/">Архивировано</a> 4 июля 2018<span class="reference-accessdate">. Дата обращения: 4 июля 2018</span>.</cite><span title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&amp;rft.genre=article&amp;rft.atitle=%D0%A7%D0%B5%D0%BC+PostgreSQL+%D0%BB%D1%83%D1%87%D1%88%D0%B5+%D0%B4%D1%80%D1%83%D0%B3%D0%B8%D1%85+SQL+%D0%B1%D0%B0%D0%B7+%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85+%D1%81+%D0%BE%D1%82%D0%BA%D1%80%D1%8B%D1%82%D1%8B%D0%BC+%D0%B8%D1%81%D1%85%D0%BE%D0%B4%D0%BD%D1%8B%D0%BC+%D0%BA%D0%BE%D0%B4%D0%BE%D0%BC.+%D0%A7%D0%B0%D1%81%D1%82%D1%8C+1&amp;rft.date=2016-04-29&amp;rft_id=https%3A%2F%2Fhabr.com%2Fpost%2F282764%2F&amp;rfr_id=info%3Asid%2Fru.wikipedia.org%3AJSON" class="Z3988"></span></span>
</li>
</ol></div></div>
<div class="mw-heading mw-heading2"><h2 id="Ссылки"><span id=".D0.A1.D1.81.D1.8B.D0.BB.D0.BA.D0.B8"></span>Ссылки</h2></div>
<ul><li><a rel="nofollow" class="external text" href="http://json.org/json-ru.html">Официальная домашняя страница формата на русском языке</a></li>
<li><a rel="nofollow" class="external text" href="http://json-rpc.org/">json-rpc.org</a> <a rel="nofollow" class="external text" href="https://web.archive.org/web/20141229142012/http://json-rpc.org/">Архивная копия</a> от 29 декабря 2014 на <a href="Wayback_Machine" title="Wayback Machine">Wayback Machine</a>&nbsp;<span class="ref-info" title="на английском языке" style="cursor:help;">(англ.)</span></li>
<li><a rel="nofollow" class="external text" href="http://learn.javascript.ru/json">Глава о JSON из онлайн-учебника JavaScript</a></li>
<li><a rel="nofollow" class="external text" href="https://skalolaskovy.ru/analytics/65-system-analytics/591-comments-in-json">Комментарии в JSON (статья)</a>&nbsp;<span class="ref-info" title="на русском языке" style="cursor:help;">(рус.)</span></li></ul>
<div role="navigation" class="navbox" aria-labelledby="Языки_разметки_документов" data-name="Языки разметки документов"><table class="nowraplinks collapsible collapsed navbox-inner" style="border-spacing:0;background:transparent;color:inherit"><tbody><tr><th scope="colgroup" class="navbox-title" colspan="2"><span class="navbox-gear" style="float:left;text-align:left;width:5em;margin-right:0.5em"></span><div id="Языки_разметки_документов" style="font-size:114%;margin:0 5em"><a href="%D0%AF%D0%B7%D1%8B%D0%BA_%D1%80%D0%B0%D0%B7%D0%BC%D0%B5%D1%82%D0%BA%D0%B8" title="Язык разметки">Языки разметки документов</a></div></th></tr><tr><th scope="row" class="navbox-group" style="width:1px">Офисные<br> документы</th><td class="navbox-list navbox-odd hlist" style="text-align:left;border-left-width:2px;border-left-style:solid;width:100%;padding:0px"><div style="padding:0em 0.25em">
<ul><li>Compound Document Format</li>
<li><a href="Office_Open_XML" title="Office Open XML">OOXML</a> (SpreadsheetML, PresentationML, WordprocessingML)</li>
<li><a href="OpenDocument" title="OpenDocument">ODF</a></li>
<li><a href="Uniform_Office_Format" title="Uniform Office Format">UOF</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1px">Общеизвестные</th><td class="navbox-list navbox-even hlist" style="text-align:left;border-left-width:2px;border-left-style:solid;width:100%;padding:0px"><div style="padding:0em 0.25em">
<ul><li><a href="CSV" title="CSV">CSV</a></li>
<li><a href="HTML" title="HTML">HTML</a></li>
<li><a href="XML" title="XML">XML</a></li>
<li><a href="XHTML" title="XHTML">XHTML</a></li>
<li><a href="MathML" title="MathML">MathML</a></li>
<li><a href="Rich_Text_Format" title="Rich Text Format">RTF</a></li>
<li><a href="TeX" title="TeX">TeX</a></li>
<li><a href="LaTeX" title="LaTeX">LaTeX</a></li>
<li><a href="Markdown" title="Markdown">Markdown</a></li>
<li><a href="%D0%92%D0%B8%D0%BA%D0%B8-%D1%80%D0%B0%D0%B7%D0%BC%D0%B5%D1%82%D0%BA%D0%B0" title="Вики-разметка">Вики-разметка</a></li></ul>
</div></td></tr><tr><th scope="row" class="navbox-group" style="width:1px">Менее<br> известные</th><td class="navbox-list navbox-odd hlist" style="text-align:left;border-left-width:2px;border-left-style:solid;width:100%;padding:0px"><div style="padding:0em 0.25em">
<ul><li><a href="AsciiDoc" title="AsciiDoc">AsciiDoc</a></li>
<li><a href="Chemical_Markup_Language" title="Chemical Markup Language">CML</a></li>
<li><a href="CHTML" title="CHTML">C-HTML</a></li>
<li><a href="ConTeXt" title="ConTeXt">ConTeXt</a></li>
<li>Crossmark</li>
<li><a href="DITA" title="DITA">DITA</a></li>
<li><a href="DocBook" title="DocBook">DocBook</a></li>
<li>eLML</li>
<li>EAD</li>
<li>Enriched text</li>
<li>FHTML</li>
<li>GML</li>
<li>GuideML</li>
<li>HDML</li>
<li>HyTime</li>
<li>HyperTeX</li>
<li>IPF</li>
<li><a href="FictionBook" title="FictionBook">FictionBook</a></li>
<li><a href="LilyPond" title="LilyPond">LilyPond</a></li>
<li>LinuxDoc</li>
<li>Lout</li>
<li>MIF</li>
<li>MAML</li>
<li>MEI</li>
<li>MusicXML</li>
<li>OMDoc</li>
<li>OpenMath</li>
<li><a href="%D0%9F%D1%80%D0%BE%D1%81%D1%82%D0%B0%D1%8F_%D1%81%D1%82%D0%B0%D1%80%D0%B0%D1%8F_%D0%B4%D0%BE%D0%BA%D1%83%D0%BC%D0%B5%D0%BD%D1%82%D0%B0%D1%86%D0%B8%D1%8F" title="Простая старая документация">POD</a></li>
<li>RTML</li>
<li><a href="ReStructuredText" title="ReStructuredText">ReST</a></li>
<li>RTML</li>
<li>RFT</li>
<li><a href="S1000D" title="S1000D">S1000D</a></li>
<li>TEI</li>
<li><a href="Texinfo" title="Texinfo">Texinfo</a></li>
<li><a href="TOML" title="TOML">TOML</a></li>
<li>troff</li>
<li><a href="WML" title="WML">WML</a></li>
<li>WapTV</li>
<li><a href="XAML" title="XAML">XAML</a></li>
<li><a href="YAML" title="YAML">YAML</a></li>
<li>Z Format</li></ul>
</div></td></tr></tbody></table></div></div><!--htdig_noindex--><div><div class="zim-footer">
    Эта статья взята у (из) <a class="external text" title="Последний раз редактировалась 2026-01-03" href="https://ru.wikipedia.org/wiki/?title=JSON&amp;oldid=150979769">Википедия</a>. Текст лицензируется по <a class="external text" href="https://creativecommons.org/licenses/by-sa/4.0/deed.ru">Creative Commons Attribution-Share Alike 4.0</a>. К медиа файлам могут применятся дополнительные условия.
</div>
</div><!--/htdig_noindex--></div>
      </div>
    </div>
     <script src="./_webp_/webpHandler.js"></script>
  

</body></html>