aboutsummaryrefslogtreecommitdiff
path: root/files/uk/web/javascript/reference/global_objects/json/parse/index.html
blob: 685832a8647c9e6e328897030dcea76ff3356969 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
---
title: JSON.parse()
slug: Web/JavaScript/Reference/Global_Objects/JSON/parse
tags:
  - ECMAScript5
  - JSON
  - JavaScript
  - Method
  - Довідка
translation_of: Web/JavaScript/Reference/Global_Objects/JSON/parse
---
<div>{{JSRef}}</div>

<div><span class="seoSummary">Метод <code><strong>JSON.parse()</strong></code> розбирає рядок із JSON, створюючи відповідне до його вмісту значення чи об'єкт. Якщо вказати функцію <code>reviver</code> — другий необов'язковий параметр — її буде використано для перетворення створеного об'єкта та його властивостей перед поверненням.</span>

<div> </div>

<div>{{EmbedInteractiveExample("pages/js/json-parse.html")}}</div>

<p class="hidden">Першокод цього прикладу збережено у репозиторії GitHub. Якщо ви хочете долучитися до створення чи поліпшення таких прикладів, пропонуйте нам свої зміни до репозиторію <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a>.</p>
</div>

<h2 id="Синтаксис">Синтаксис</h2>

<pre class="syntaxbox">JSON.parse(<var>text</var>[, <var>reviver</var>])</pre>

<h3 id="Параметри">Параметри</h3>

<dl>
 <dt><code>text</code></dt>
 <dd>Рядок, що його має бути розібрано, як JSON. Докладні відомості про синтаксис JSON наведено в статті про об'єкт {{jsxref("JSON")}}.</dd>
 <dt><code>reviver</code> {{optional_inline}}</dt>
 <dd>Якщо вказано функцію, її буде використано для перетворення отриманих значень перед поверненням.</dd>
</dl>

<h3 id="Вертає">Вертає</h3>

<p>{{jsxref("Object", "Об'єкт")}}, що відповідає переданому JSON-рядку.</p>

<h3 id="Винятки">Винятки</h3>

<p>Викидає виняток {{jsxref("Global_Objects/SyntaxError", "SyntaxError")}}, якщо вміст переданого рядка не є належним JSON.</p>

<h2 id="Приклади">Приклади</h2>

<h3 id="Використання_JSON.parse()">Використання <code>JSON.parse()</code></h3>

<pre class="brush: js">JSON.parse('{}');                   // {}
JSON.parse('{"x": {"value": 1}}');  // {x: {value: 1}}
JSON.parse('true');                 // true
JSON.parse('"щось навіщось"');      // "щось навіщось"
JSON.parse('[1, 5, "false"]');      // [1, 5, "false"]
JSON.parse('null');                 // null
</pre>

<h3 id="Використання_параметра_reviver">Використання параметра <code>reviver</code></h3>

<p>Якщо <code>reviver</code> вказано, то його буде використано для <em>перетворення</em> кожного значення, отриманого шляхом розбору JSON-рядка. Кожне значення (об'єкт та всі його властивості) окремо піддається перетворенню за допомогою <code>reviver</code> в порядку зсередини назовні (від властивостей найглибше вкладених об'єктів). Задля перетворення чергової властивості до функції <code>reviver</code> передається два аргументи: ім'я властивості (рядок) та її значення. Посилання <code>this</code> вказує на об'єкт, що містить зазначену властивість.</p>

<p>Якщо функція <code>reviver</code> повертає {{jsxref("undefined")}} (або взагалі не вертає значення), властивість буде видалено з об'єкта. Інакше повернуте значення буде встановлено замість попереднього. Отже, якщо ви маєте на меті перетворити лише деякі значення, для решти функція <code>reviver</code> має вертати значення другого аргументу без змін.</p>

<pre class="brush: js">JSON.parse('{"p": 5, "x": "5"}', function (key, value) {
  return typeof value === 'number'
    ? value * 2 // Повернути подвоєне значення, якщо це число.
    : value     // Решту значень повернути без змін.
});

// { p: 10, x: "5" }

JSON.parse('{"1": 1, "2": 2, "3": {"4": 4, "5": {"6": 6}}}', function (key, value) {
  // Вивести ім'я чергової властивості (для останньої це порожній рядок — "").
  console.log(key);

  // Повернути значення властивості без змін.
  return value;
});

// 1
// 2
// 4
// 6
// 5
// 3
// ""
</pre>

<h3 id="Прикінцеві_коми_вважаються_за_помилку">Прикінцеві коми вважаються за помилку</h3>

<pre class="example-bad brush: js example-bad">// Обидва виклики викидають SyntaxError.
JSON.parse('[1, 2, 3, 4, ]');
JSON.parse('{"foo" : 1, }');
</pre>

<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.2', 'JSON.parse')}}</td>
   <td>{{Spec2('ES5.1')}}</td>
   <td>Початкова виознака. Запроваджено у JavaScript 1.7.</td>
  </tr>
  <tr>
   <td>{{SpecName('ES6', '#sec-json.parse', 'JSON.parse')}}</td>
   <td>{{Spec2('ES6')}}</td>
   <td> </td>
  </tr>
  <tr>
   <td>{{SpecName('ESDraft', '#sec-json.parse', 'JSON.parse')}}</td>
   <td>{{Spec2('ESDraft')}}</td>
   <td> </td>
  </tr>
 </tbody>
</table>

<h2 id="Підтримка_веб-переглядачами">Підтримка веб-переглядачами</h2>

<div>
<div class="hidden">Таблиця сумісності на цій сторінці створена зі структурованих даних. Якщо ви хочете долучитися до розробки цих даних, пропонуйте нам свої pull request до репозиторію <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a>.</div>

<p>{{Compat("javascript.builtins.JSON.parse")}}</p>
</div>

<h2 id="Див._також">Див. також</h2>

<ul>
 <li>{{jsxref("JSON.stringify()")}}</li>
</ul>