Метод JSON.parse() розбирає рядок із JSON, створюючи відповідне до його вмісту значення чи об'єкт JavaScript. Якщо вказати функцію reviver — другий необов'язковий параметр — її буде використано для перетворення створеного об'єкта та його властивостей перед поверненням.

Синтаксис

JSON.parse(text[, reviver])

Параметри

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

Вертає

Об'єкт, що відповідає переданому JSON-рядку.

Винятки

Викидає виняток 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 повертає 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, }');

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

Специфікація Статус Коментар
ECMAScript 5.1 (ECMA-262)
The definition of 'JSON.parse' in that specification.
Standard Первинне оголошення. Запроваджено у JavaScript 1.7.
ECMAScript 2015 (6th Edition, ECMA-262)
The definition of 'JSON.parse' in that specification.
Standard  
ECMAScript Latest Draft (ECMA-262)
The definition of 'JSON.parse' in that specification.
Living Standard  

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

FeatureChromeEdgeFirefoxInternet ExplorerOperaSafari
Basic support Yes Yes3.5810.54
FeatureAndroid webviewChrome for AndroidEdge mobileFirefox for AndroidIE mobileOpera AndroidiOS Safari
Basic support Yes Yes Yes4 Yes Yes Yes

Див. також

Мітки документа й учасники

 Зробили внесок у цю сторінку: asmforce
 Востаннє оновлена: asmforce,