JSON.parse()

Baseline Widely available *

This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.

* Some parts of this feature may have varying levels of support.

Сводка

Метод JSON.parse() разбирает строку JSON, возможно с преобразованием получаемого в процессе разбора значения.

Синтаксис

JSON.parse(text[, reviver])

Параметры

text

Разбираемая строка JSON. Смотрите документацию по объекту JSON для описания синтаксиса JSON.

reviver Необязательный

Если параметр является функцией, определяет преобразование полученного в процессе разбора значения, прежде, чем оно будет возвращено вызывающей стороне.

Возвращаемое значение

Возвращает объект Object, соответствующий переданной строке JSON text.

Выбрасываемые исключения

Выбрасывает исключение SyntaxError, если разбираемая строка не является правильным JSON.

Примеры

Пример: использование метода JSON.parse()

js
JSON.parse("{}"); // {}
JSON.parse("true"); // true
JSON.parse('"foo"'); // "foo"
JSON.parse('[1, 5, "false"]'); // [1, 5, "false"]
JSON.parse("null"); // null

Пример: использование параметра reviver

Если определён параметр reviver, значение, вычисляемое при разборе строки, будет преобразовано перед его возвратом. В частности, вычисленное значение и все его свойства (начиная с самых вложенных свойств и кончая самим значением), каждое проходят через функцию reviver, которая вызывается с контекстом this, содержащим объект в виде обрабатываемого свойства, и с аргументами: именем свойства в виде строки и значением свойства. Если функция reviver вернёт undefined (либо вообще не вернёт никакого значения, например, если выполнение достигнет конца функции), свойство будет удалено из объекта. В противном случае свойство будет переопределено возвращаемым значением.

В конечном итоге, функция reviver вызывается с пустой строкой и самым верхним значением, чтобы обеспечить преобразование самого верхнего значения. Убедитесь, что вы правильно обрабатываете этот случай — обычно для этого нужно просто вернуть само значение — или метод JSON.parse() вернёт undefined.

js
JSON.parse('{"p": 5}', function (k, v) {
  if (k === "") {
    return v;
  } // самое верхнее значение - возвращаем его
  return v * 2; // иначе возвращаем v * 2.
}); // { p: 10 }

JSON.parse('{"1": 1, "2": 2, "3": {"4": 4, "5": {"6": 6}}}', function (k, v) {
  console.log(k); // пишем имя текущего свойства, последним именем будет ""
  return v; // возвращаем неизменённое значение свойства
});

// 1
// 2
// 4
// 6
// 5
// 3
// ""

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

Specification
ECMAScript® 2025 Language Specification
# sec-json.parse

Совместимость с браузерами

Report problems with this compatibility data on GitHub
desktopmobileserver
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
Deno
Node.js
parse
Reviver has context parameter

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support
No support
No support

Смотрите также