Метод JSON.parse() розбирає рядок із JSON, створюючи відповідне до його вмісту значення чи об'єкт. Якщо вказати функцію 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.
Draft  

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

Update compatibility data on GitHub
DesktopMobileServer
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome for AndroidEdge MobileFirefox for AndroidOpera for AndroidSafari on iOSSamsung InternetNode.js
Basic supportChrome Full support YesEdge Full support YesFirefox Full support 3.5IE Full support 8Opera Full support 10.5Safari Full support 4WebView Android Full support YesChrome Android Full support YesEdge Mobile Full support YesFirefox Android Full support 4Opera Android Full support YesSafari iOS Full support YesSamsung Internet Android Full support Yesnodejs Full support Yes

Legend

Full support  
Full support

Див. також

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

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