diff options
Diffstat (limited to 'files/uk/web/javascript/reference/global_objects/json/index.html')
-rw-r--r-- | files/uk/web/javascript/reference/global_objects/json/index.html | 158 |
1 files changed, 158 insertions, 0 deletions
diff --git a/files/uk/web/javascript/reference/global_objects/json/index.html b/files/uk/web/javascript/reference/global_objects/json/index.html new file mode 100644 index 0000000000..af5818da2a --- /dev/null +++ b/files/uk/web/javascript/reference/global_objects/json/index.html @@ -0,0 +1,158 @@ +--- +title: JSON +slug: Web/JavaScript/Reference/Global_Objects/JSON +tags: + - JSON + - JavaScript + - Довідка + - Об'єкт +translation_of: Web/JavaScript/Reference/Global_Objects/JSON +--- +<div>{{JSRef}}</div> + +<p>Об'єкт <strong><code>JSON</code></strong> містить методи для розбору <a class="external" href="http://json.org/">JavaScript Object Notation</a> ({{glossary("JSON")}}) і конвертації значень у JSON. Його можна або просто викликати, або конструювати; і окрім своїх двох методів він не має у собі іншої корисної функціональності.</p> + +<h2 id="Опис">Опис</h2> + +<h3 id="Об'єктна_нотація_JavaScript">Об'єктна нотація JavaScript</h3> + +<p>JSON - це синтаксис для серіалізації об'єктів, масивів, чисел, строк, булевих значень, та {{jsxref("null")}}. Він заснований на синтаксисі JavaScript, проте дещо відрізняється від нього: деякий JavaScript не є JSON, і деякий JSON не є JavaScript. Докладніше у <a href="http://timelessrepo.com/json-isnt-a-javascript-subset">JSON: The JavaScript subset that isn't</a>.</p> + +<table> + <caption>Відмінності JavaScript і JSON</caption> + <thead> + <tr> + <th scope="col">Тип у JavaScript</th> + <th scope="col">Відмінність у JSON</th> + </tr> + </thead> + <tbody> + <tr> + <td>Об'єкти та масиви</td> + <td>Назви полів повинні являти собою строки у подвійних лапках; прикінцеві коми заборонені.</td> + </tr> + <tr> + <td>Числа</td> + <td>Ведучі нулі також заборонені (При виконанні JSON.stringify нулі просто проігноруються, проте JSON.parse викине SyntaxError); після десяткової крапки повинна слідувати хоча б одна цифра.</td> + </tr> + <tr> + <td>Строки</td> + <td> + <p>Лише обмежений набір символів можна екранувати; деякі керівні символи заборонені; такі символи юнікоду, як розділювач рядків (<a href="http://unicode-table.com/en/2028/">U+2028</a>) та розділювач абзаців (<a href="http://unicode-table.com/en/2029/">U+2029</a>) дозволені; строки повинні виділятись подвійними лапками. Зверніть увагу на наступні приклади, де {{jsxref("JSON.parse()")}} нормально працює, проте при обчисленні виразу як JavaScript-коду буде отримана помилка {{jsxref("SyntaxError")}}:</p> + + <pre class="brush: js"> +var code = '"\u2028\u2029"'; +JSON.parse(code); // працює +eval(code); // помилка +</pre> + </td> + </tr> + </tbody> +</table> + +<p>Повний синтаксис JSON виглядає так:</p> + +<pre><var>JSON</var> = <strong>null</strong> + або <strong>true</strong> або <strong>false</strong> + або <var>JSONNumber</var> + або <var>JSONString</var> + або <var>JSONObject</var> + або <var>JSONArray</var> + +<var>JSONNumber</var> = <strong>-</strong> <var>PositiveNumber</var> + <em>чи</em> <var>PositiveNumber</var> +<var>PositiveNumber</var> = DecimalNumber + або <var>DecimalNumber</var> <strong>.</strong> <var>Digits</var> + <em>або</em> <var>DecimalNumber</var> <strong>.</strong> <var>Digits</var> <var>ExponentPart</var> + або <var>DecimalNumber</var> <var>ExponentPart</var> +<var>DecimalNumber</var> = <strong>0</strong> + або <var>OneToNine</var> <var>Digits</var> +<var>ExponentPart</var> = <strong>e</strong> <var>Exponent</var> + чи <strong>E</strong> <var>Exponent</var> +<var>Exponent</var> = <var>Digits</var> + <em>або</em> <strong>+</strong> <var>Digits</var> + або <strong>-</strong> <var>Digits</var> +<var>Digits</var> = <var>Digit</var> + чи <var>Digits</var> <var>Digit</var> +<var>Digit</var> = від <strong>0</strong> до <strong>9</strong> +<var>OneToNine</var> = <strong>від 1</strong> до <strong>9</strong> + +<var>JSONString</var> = <strong>""</strong> + <em>чи</em> <strong>"</strong> <var>StringCharacters</var> <strong>"</strong> +<var>StringCharacters</var> = <var>StringCharacter</var> + чи <var>StringCharacters</var> <var>StringCharacter</var> +<var>StringCharacter</var> = будь-який символ + за виключенням <strong>"</strong> або <strong>\</strong> або від U+0000 до U+001F + або <var>EscapeSequence</var> +<var>EscapeSequence</var> = <strong>\"</strong> або <strong>\/</strong> або <strong>\\</strong> або <strong>\b</strong> або <strong>\f</strong> або <strong>\n</strong> або <strong>\r</strong> або <strong>\t</strong> + або <strong>\u</strong> <var>HexDigit</var> <var>HexDigit</var> <var>HexDigit</var> <var>HexDigit</var> +<var>HexDigit</var> = від <strong>0</strong> до <strong>9</strong> + або від <strong>A</strong> до <strong>F</strong> + або від <strong>a</strong> до <strong>f</strong> + +<var>JSONObject</var> = <strong>{</strong> <strong>}</strong> + чи <strong>{</strong> <var>Members</var> <strong>}</strong> +<var>Members</var> = <var>JSONString</var> <strong>:</strong> <var>JSON</var> + чи <var>Members</var> <strong>,</strong> <var>JSONString</var> <strong>:</strong> <var>JSON</var> + +<var>JSONArray</var> = <strong>[</strong> <strong>]</strong> + <em>чи</em> <strong>[</strong> <var>ArrayElements</var> <strong>]</strong> +<var>ArrayElements</var> = <var>JSON</var> + <em>чи</em> <var>ArrayElements</var> <strong>,</strong> <var>JSON</var> +</pre> + +<p>Беззмістовні пробільні символи можуть бути будь-де за винятком <code><var>JSONNumber</var></code> (числа не повинні містити пробіли) або <code><var>JSONString</var></code> (де це сприймається за частину строки, або призведе до помилки). Символ табуляції (<a href="http://unicode-table.com/en/0009/">U+0009</a>), повернення каретки (<a href="http://unicode-table.com/en/000D/">U+000D</a>), початку рядка (<a href="http://unicode-table.com/en/000A/">U+000A</a>) та пробіл (<a href="http://unicode-table.com/en/0020/">U+0020</a>) - це всі дійсні пробільні символи.</p> + +<h2 id="Методи">Методи</h2> + +<dl> + <dt>{{jsxref("JSON.parse()")}}</dt> + <dd>Розбирає строку як JSON, як опція — перетворює результат і його властивості, та повертає його.</dd> + <dt>{{jsxref("JSON.stringify()")}}</dt> + <dd>Повертає строку JSON відповідно до поданого значення. Як опція — може включити до результату лише певні поля чи замінити значення полів згідно з побажаннями користувача.</dd> +</dl> + +<h2 id="Специфікації">Специфікації</h2> + +<table class="standard-table"> + <tbody> + <tr> + <th scope="col">Специфікація</th> + <th scope="col">Статус</th> + <th scope="col">Примітка</th> + </tr> + <tr> + <td>{{SpecName('ES5.1', '#sec-15.12', 'JSON')}}</td> + <td>{{Spec2('ES5.1')}}</td> + <td>Первинне визначення.</td> + </tr> + <tr> + <td>{{SpecName('ES6', '#sec-json-object', 'JSON')}}</td> + <td>{{Spec2('ES6')}}</td> + <td> </td> + </tr> + <tr> + <td>{{SpecName('ESDraft', '#sec-json-object', 'JSON')}}</td> + <td>{{Spec2('ESDraft')}}</td> + <td> </td> + </tr> + </tbody> +</table> + +<h2 id="Підтримка_у_браузерах">Підтримка у браузерах</h2> + +<div> +<div> +<div> +<div class="hidden">Таблиця сумісності на цій сторінці сформована автоматично із структурованих даних. Якщо ви маєте бажання зробити свій внесок до цих даних - будь-ласка, ось репозиторій <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a>.</div> + +<p>{{Compat("javascript.builtins.JSON")}}</p> +</div> +</div> +</div> + +<h2 id="Дивіться_також">Дивіться також</h2> + +<ul> + <li>{{jsxref("Date.prototype.toJSON()")}}</li> +</ul> |