JSON.parse()
The JSON.parse()
method parses a
JSON string, constructing the JavaScript value or object described by the string. An
optional reviver function can be provided to perform a transformation
on the resulting object before it is returned.
Syntax
JSON.parse(text)
JSON.parse(text, reviver)
Parameters
text
-
The string to parse as JSON. See the
JSON
object for a description of JSON syntax. reviver
Optional-
If a function, this prescribes how the value originally produced by parsing is transformed, before being returned.
Return value
Exceptions
Throws a SyntaxError
exception if the string to parse is not valid JSON.
Examples
Using JSON.parse()
JSON.parse('{}'); // {}
JSON.parse('true'); // true
JSON.parse('"foo"'); // "foo"
JSON.parse('[1, 5, "false"]'); // [1, 5, "false"]
JSON.parse('null'); // null
Using the reviver parameter
If a reviver
is specified, the value computed by parsing is
transformed before being returned. Specifically, the computed value and all its
properties (beginning with the most nested properties and proceeding to the original
value itself) are individually run through the reviver
. Then it
is called, with the object containing the property being processed as this
,
and with the property name as a string, and the property value as arguments. If the
reviver
function returns undefined
(or returns no
value, for example, if execution falls off the end of the function), the property is
deleted from the object. Otherwise, the property is redefined to be the return value.
If the reviver
only transforms some values and not others, be
certain to return all untransformed values as-is, otherwise, they will be deleted from
the resulting object.
JSON.parse('{"p": 5}', (key, value) =>
typeof value === 'number'
? value * 2 // return value * 2 for numbers
: value // return everything else unchanged
);
// { p: 10 }
JSON.parse('{"1": 1, "2": 2, "3": {"4": 4, "5": {"6": 6}}}', (key, value) => {
console.log(key); // log the current property name, the last is "".
return value; // return the unchanged property value.
});
// 1
// 2
// 4
// 6
// 5
// 3
// ""
JSON.parse() does not allow trailing commas
// both will throw a SyntaxError
JSON.parse('[1, 2, 3, 4, ]');
JSON.parse('{"foo" : 1, }');
JSON.parse() does not allow single quotes
// will throw a SyntaxError
JSON.parse("{'foo': 1}");
Specifications
Specification |
---|
ECMAScript Language Specification # sec-json.parse |
Browser compatibility
Report problems with this compatibility data on GitHubdesktop | mobile | server | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
parse | ChromeFull support3 | EdgeFull support12 | FirefoxFull support3.5 | Internet ExplorerFull support8 | OperaFull support10.5 | SafariFull support4 | WebView AndroidFull support37 | Chrome AndroidFull support18 | Firefox for AndroidFull support4 | Opera AndroidFull support11 | Safari on iOSFull support4 | Samsung InternetFull support1.0 | DenoFull support1.0 | Node.jsFull support0.10.0 |
Legend
- Full support
- Full support