--- 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 ---
JSON.parse() розбирає рядок із JSON, створюючи відповідне до його вмісту значення чи об'єкт. Якщо вказати функцію reviver — другий необов'язковий параметр — її буде використано для перетворення створеного об'єкта та його властивостей перед поверненням.
Першокод цього прикладу збережено у репозиторії GitHub. Якщо ви хочете долучитися до створення чи поліпшення таких прикладів, пропонуйте нам свої зміни до репозиторію https://github.com/mdn/interactive-examples.
JSON.parse(text[, reviver])
textreviver {{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")}}