--- 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])
text
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")}}