--- 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 ---
{{JSRef}}
Метод JSON.parse() розбирає рядок із JSON, створюючи відповідне до його вмісту значення чи об'єкт. Якщо вказати функцію reviver — другий необов'язковий параметр — її буде використано для перетворення створеного об'єкта та його властивостей перед поверненням.
 
{{EmbedInteractiveExample("pages/js/json-parse.html")}}

Синтаксис

JSON.parse(text[, reviver])

Параметри

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

Вертає

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

Винятки

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

Приклади

Використання JSON.parse()

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

Використання параметра reviver

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

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

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
// ""

Прикінцеві коми вважаються за помилку

// Обидва виклики викидають SyntaxError.
JSON.parse('[1, 2, 3, 4, ]');
JSON.parse('{"foo" : 1, }');

Специфікації

Специфікація Статус Коментар
{{SpecName('ES5.1', '#sec-15.12.2', 'JSON.parse')}} {{Spec2('ES5.1')}} Початкова виознака. Запроваджено у JavaScript 1.7.
{{SpecName('ES6', '#sec-json.parse', 'JSON.parse')}} {{Spec2('ES6')}}  
{{SpecName('ESDraft', '#sec-json.parse', 'JSON.parse')}} {{Spec2('ESDraft')}}  

Підтримка веб-переглядачами

{{Compat("javascript.builtins.JSON.parse")}}

Див. також