aboutsummaryrefslogtreecommitdiff
path: root/files/uk/web/javascript/reference/global_objects/json/index.html
diff options
context:
space:
mode:
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.html158
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>