The JSON object is the %JSON% intrinsic object and the initial value of the JSON property of the global object. The JSON object is a single ordinary object that contains two functions, parse and stringify, that are used to parse and construct JSON texts. The JSON Data Interchange Format is defined in ECMA-404. The JSON interchange format used in this specification is exactly that described by ECMA-404.
Conforming implementations of JSON.parse and JSON.stringify must support the exact interchange format described in the ECMA-404 specification without any deletions or extensions to the format.
The value of the [[Prototype]] internal slot of the JSON object is the intrinsic object %ObjectPrototype% (19.1.3). The value of the [[Extensible]] internal slot of the JSON object is set to true.
The JSON object does not have a [[Construct]] internal method; it is not possible to use the JSON object as a constructor with the new operator.
The JSON object does not have a [[Call]] internal method; it is not possible to invoke the JSON object as a function.
The parse function parses a JSON text (a JSON-formatted String) and produces an ECMAScript value. The JSON format is a subset of the syntax for ECMAScript literals, Array Initializers and Object Initializers. After parsing, JSON objects are realized as ECMAScript objects. JSON arrays are realized as ECMAScript Array instances. JSON strings, numbers, booleans, and null are realized as ECMAScript Strings, Numbers, Booleans, and null.
The optional reviver parameter is a function that takes two parameters, key and value. It can filter and transform the results. It is called with each of the key/value pairs produced by the parse, and its return value is used instead of the original value. If it returns what it received, the structure is not modified. If it returnsundefined then the property is deleted from the result.
"(", JText, and ");".JSON allows Unicode code units 0x2028 (LINE SEPARATOR) and 0x2029 (PARAGRAPH SEPARATOR) to directly appear in String literals without using an escape sequence. This is enabled by using the following alternative definition of DoubleStringCharacter when parsing scriptText in step 5:
" or \ or U+0000 through U+001F\ EscapeSequenceThe SV of DoubleStringCharacter :: SourceCharacter but not one of " or \ or U+0000 throughU+001F is the UTF16Encoding (10.1.1) of the code point value of SourceCharacter.