The JSON
object contains methods for parsing JavaScript Object Notation (JSON) and converting values to JSON. It can't be called or constructed, and aside from its two method properties, it has no interesting functionality of its own.
JSON is a syntax for serializing objects, arrays, numbers, strings, booleans, and null
. It is based upon JavaScript syntax but is distinct from it: some JavaScript is not JSON.
Objects and Arrays: Property names must be double-quoted strings; trailing commas are forbidden.
Numbers: Leading zeros are prohibited (in JSON.stringify
zeros will be ignored, but in JSON.parse
it will throw SyntaxError); a decimal point must be followed by at least one digit.
Any JSON text is a valid JavaScript expression – but only in JavaScript engines that have implemented the proposal to make all JSON text valid ECMA-262. In engines that haven't implemented the proposal, U+2028 LINE SEPARATOR and U+2029 PARAGRAPH SEPARATOR are allowed in string literals and property keys in JSON; but their use in these features in JavaScript literals is a SyntaxError
.
Consider this example where JSON.parse()
parses the string as JSON and eval
executes the string as JavaScript:
var code = '"\u2028\u2029"'; JSON.parse(code); // evaluates to "\u2028\u2029" in all engines eval(code); // throws a SyntaxError in old engines
The full JSON syntax is as follows:
JSON = null or true or false or JSONNumber or JSONString or JSONObject or JSONArray JSONNumber = - PositiveNumber or PositiveNumber PositiveNumber = DecimalNumber or DecimalNumber . Digits or DecimalNumber . Digits ExponentPart or DecimalNumber ExponentPart DecimalNumber = 0 or OneToNine Digits ExponentPart = e Exponent or E Exponent Exponent = Digits or + Digits or - Digits Digits = Digit or Digits Digit Digit = 0 through 9 OneToNine = 1 through 9 JSONString = "" or " StringCharacters " StringCharacters = StringCharacter or StringCharacters StringCharacter StringCharacter = any character except " or \ or U+0000 through U+001F or EscapeSequence EscapeSequence = \" or \/ or \\ or \b or \f or \n or \r or \t or \u HexDigit HexDigit HexDigit HexDigit HexDigit = 0 through 9 or A through F or a through f JSONObject = { } or { Members } Members = JSONString : JSON or Members , JSONString : JSON JSONArray = [ ] or [ ArrayElements ] ArrayElements = JSON or ArrayElements , JSON
Insignificant whitespace may be present anywhere except within a JSONNumber
(numbers must contain no whitespace) or JSONString
(where it is interpreted as the corresponding character in the string, or would cause an error). The tab character (U+0009), carriage return (U+000D), line feed (U+000A), and space (U+0020) characters are the only valid whitespace characters.
JSON.parse()
JSON.stringify()
Specification | Status | Comment |
---|---|---|
ECMAScript 5.1 (ECMA-262) The definition of 'JSON' in that specification. | Standard | Initial definition. |
ECMAScript 2015 (6th Edition, ECMA-262) The definition of 'JSON' in that specification. | Standard | |
ECMAScript Latest Draft (ECMA-262) The definition of 'JSON' in that specification. | Draft |
Desktop | ||||||
---|---|---|---|---|---|---|
Chrome | Edge | Firefox | Internet Explorer | Opera | Safari | |
Basic support | Yes | Yes | 3.5 | 8 | 10.5 | 4 |
parse |
Yes | Yes | 3.5 | 8 | 10.5 | 4 |
stringify |
Yes | Yes | 3.5 | 8 | 10.5 | 4 |
JavaScript is a superset of JSON | 66 | No | 62 | No | 53 | Yes |
Mobile | |||||||
---|---|---|---|---|---|---|---|
Android webview | Chrome for Android | Edge Mobile | Firefox for Android | Opera for Android | iOS Safari | Samsung Internet | |
Basic support | Yes | Yes | Yes | 4 | Yes | Yes | Yes |
parse |
Yes | Yes | Yes | 4 | Yes | Yes | Yes |
stringify |
Yes | Yes | Yes | 4 | Yes | Yes | Yes |
JavaScript is a superset of JSON | 66 | 66 | No | 62 | 53 | Yes | No |
Server | |
---|---|
Node.js | |
Basic support | Yes |
parse |
Yes |
stringify |
Yes |
JavaScript is a superset of JSON | 10.0.0 |
© 2005–2018 Mozilla Developer Network and individual contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON