JSON.parse compatibility table
2010-11-17
ECMA-262-5 describes JSON lexical grammar in 15.12.1.1 The JSON Lexical Grammar section.
Conformance implementation must follow these lexical grammar rules in their JSON.parse implementation.
In the test cases, when I have used Unicode Escape Sequences (\u HexDigit HexDigit HexDigit HexDigit) I suppose to be inserted character represented by this sequence instead of UnicodeEscapeSequence itself.
| JSON text | This implementation | FF 3.6.6 | FF 4.0 beta | IE8 | IE9 Beta | Opera 11 (build 1055) | Chrome 6.0.472 | Safari 5 (6533.16) | json2 in FF 3.6.6 | |
|---|---|---|---|---|---|---|---|---|---|---|
JSON.parse |
- | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | |
JSON.parse(''); |
- | SyntaxError | SyntaxError | SyntaxError | SyntaxError | SyntaxError | SyntaxError | SyntaxError | SyntaxError | |
eval('6 * 6') == 36; |
- | SyntaxError | SyntaxError | SyntaxError | SyntaxError | SyntaxError | SyntaxError | SyntaxError | SyntaxError | |
"str", "str" |
- | SyntaxError | SyntaxError | SyntaxError | SyntaxError | SyntaxError | SyntaxError | SyntaxError | Allowed syntax | |
""" |
- | SyntaxError | SyntaxError | SyntaxError | SyntaxError | SyntaxError | SyntaxError | SyntaxError | SyntaxError | |
"\" |
- | SyntaxError | SyntaxError | SyntaxError | SyntaxError | SyntaxError | SyntaxError | SyntaxError | SyntaxError | |
"\u0000" |
- | Allowed syntax | SyntaxError | SyntaxError | SyntaxError | SyntaxError | SyntaxError | SyntaxError | Allowed syntax | |
"\u0001" |
- | Allowed syntax | SyntaxError | Allowed syntax | SyntaxError | SyntaxError | SyntaxError | SyntaxError | Allowed syntax | |
"\u0002" |
- | Allowed syntax | SyntaxError | Allowed syntax | SyntaxError | SyntaxError | SyntaxError | SyntaxError | Allowed syntax | |
"\u0003" |
- | Allowed syntax | SyntaxError | Allowed syntax | SyntaxError | SyntaxError | SyntaxError | SyntaxError | Allowed syntax | |
"\u0004" |
- | Allowed syntax | SyntaxError | Allowed syntax | SyntaxError | SyntaxError | SyntaxError | SyntaxError | Allowed syntax | |
"\u0005" |
- | Allowed syntax | SyntaxError | Allowed syntax | SyntaxError | SyntaxError | SyntaxError | SyntaxError | Allowed syntax | |
"\u0006" |
- | Allowed syntax | SyntaxError | Allowed syntax | SyntaxError | SyntaxError | SyntaxError | SyntaxError | Allowed syntax | |
"\u0007" |
- | Allowed syntax | SyntaxError | Allowed syntax | SyntaxError | SyntaxError | SyntaxError | SyntaxError | Allowed syntax | |
"\u0008" |
- | Allowed syntax | SyntaxError | Allowed syntax | SyntaxError | SyntaxError | SyntaxError | SyntaxError | Allowed syntax | |
"\u0009" |
- | Allowed syntax | SyntaxError | Allowed syntax | SyntaxError | Allowed syntax | SyntaxError | Allowed syntax | Allowed syntax | |
"\u000a" |
- | Allowed syntax | SyntaxError | SyntaxError | SyntaxError | SyntaxError | SyntaxError | SyntaxError | SyntaxError | |
"\u000b" |
- | Allowed syntax | SyntaxError | Allowed syntax | SyntaxError | SyntaxError | SyntaxError | SyntaxError | Allowed syntax | |
"\u000c" |
- | Allowed syntax | SyntaxError | Allowed syntax | SyntaxError | SyntaxError | SyntaxError | SyntaxError | Allowed syntax | |
"\u000d" |
- | Allowed syntax | SyntaxError | SyntaxError | SyntaxError | SyntaxError | SyntaxError | SyntaxError | SyntaxError | |
"\u000e" |
- | Allowed syntax | SyntaxError | Allowed syntax | SyntaxError | SyntaxError | SyntaxError | SyntaxError | Allowed syntax | |
"\u000f" |
- | Allowed syntax | SyntaxError | Allowed syntax | SyntaxError | SyntaxError | SyntaxError | SyntaxError | Allowed syntax | |
"\u0010" |
- | Allowed syntax | SyntaxError | Allowed syntax | SyntaxError | SyntaxError | SyntaxError | SyntaxError | Allowed syntax | |
"\u0011" |
- | Allowed syntax | SyntaxError | Allowed syntax | SyntaxError | SyntaxError | SyntaxError | SyntaxError | Allowed syntax | |
"\u0012" |
- | Allowed syntax | SyntaxError | Allowed syntax | SyntaxError | SyntaxError | SyntaxError | SyntaxError | Allowed syntax | |
"\u0013" |
- | Allowed syntax | SyntaxError | Allowed syntax | SyntaxError | SyntaxError | SyntaxError | SyntaxError | Allowed syntax | |
"\u0014" |
- | Allowed syntax | SyntaxError | Allowed syntax | SyntaxError | SyntaxError | SyntaxError | SyntaxError | Allowed syntax | |
"\u0015" |
- | Allowed syntax | SyntaxError | Allowed syntax | SyntaxError | SyntaxError | SyntaxError | SyntaxError | Allowed syntax | |
"\u0016" |
- | Allowed syntax | SyntaxError | Allowed syntax | SyntaxError | SyntaxError | SyntaxError | SyntaxError | Allowed syntax | |
"\u0017" |
- | Allowed syntax | SyntaxError | Allowed syntax | SyntaxError | SyntaxError | SyntaxError | SyntaxError | Allowed syntax | |
"\u0018" |
- | Allowed syntax | SyntaxError | Allowed syntax | SyntaxError | SyntaxError | SyntaxError | SyntaxError | Allowed syntax | |
"\u0019" |
- | Allowed syntax | SyntaxError | Allowed syntax | SyntaxError | SyntaxError | SyntaxError | SyntaxError | Allowed syntax | |
"\u001a" |
- | Allowed syntax | SyntaxError | Allowed syntax | SyntaxError | SyntaxError | SyntaxError | SyntaxError | Allowed syntax | |
"\u001b" |
- | Allowed syntax | SyntaxError | Allowed syntax | SyntaxError | SyntaxError | SyntaxError | SyntaxError | Allowed syntax | |
"\u001c" |
- | Allowed syntax | SyntaxError | Allowed syntax | SyntaxError | SyntaxError | SyntaxError | SyntaxError | Allowed syntax | |
"\u001d" |
- | Allowed syntax | SyntaxError | Allowed syntax | SyntaxError | SyntaxError | SyntaxError | SyntaxError | Allowed syntax | |
"\u001e" |
- | Allowed syntax | SyntaxError | Allowed syntax | SyntaxError | SyntaxError | SyntaxError | SyntaxError | Allowed syntax | |
"\u001f" |
- | Allowed syntax | SyntaxError | Allowed syntax | SyntaxError | SyntaxError | SyntaxError | SyntaxError | Allowed syntax | |
"\xF1" |
- | SyntaxError | SyntaxError | Allowed syntax | SyntaxError | SyntaxError | SyntaxError | SyntaxError | SyntaxError | |
"\101" |
- | SyntaxError | SyntaxError | Allowed syntax | SyntaxError | SyntaxError | SyntaxError | SyntaxError | SyntaxError | |
+2 |
- | Allowed syntax | Allowed syntax | SyntaxError | SyntaxError | SyntaxError | SyntaxError | SyntaxError | SyntaxError | |
2. |
- | Allowed syntax | Allowed syntax | Allowed syntax | SyntaxError | SyntaxError | SyntaxError | SyntaxError | Allowed syntax | |
.2 |
- | Allowed syntax | Allowed syntax | Allowed syntax | SyntaxError | SyntaxError | SyntaxError | SyntaxError | SyntaxError | |
00 |
- | Allowed syntax | Allowed syntax | SyntaxError | Allowed syntax | SyntaxError | SyntaxError | SyntaxError | Allowed syntax | |
01 |
- | Allowed syntax | Allowed syntax | SyntaxError | Allowed syntax | SyntaxError | SyntaxError | SyntaxError | Allowed syntax | |
02 |
- | Allowed syntax | Allowed syntax | SyntaxError | Allowed syntax | SyntaxError | SyntaxError | SyntaxError | Allowed syntax | |
03 |
- | Allowed syntax | Allowed syntax | SyntaxError | Allowed syntax | SyntaxError | SyntaxError | SyntaxError | Allowed syntax | |
04 |
- | Allowed syntax | Allowed syntax | SyntaxError | Allowed syntax | SyntaxError | SyntaxError | SyntaxError | Allowed syntax | |
05 |
- | Allowed syntax | Allowed syntax | SyntaxError | Allowed syntax | SyntaxError | SyntaxError | SyntaxError | Allowed syntax | |
06 |
- | Allowed syntax | Allowed syntax | SyntaxError | Allowed syntax | SyntaxError | SyntaxError | SyntaxError | Allowed syntax | |
07 |
- | Allowed syntax | Allowed syntax | SyntaxError | Allowed syntax | SyntaxError | SyntaxError | SyntaxError | Allowed syntax | |
08 |
- | Allowed syntax | Allowed syntax | SyntaxError | Allowed syntax | SyntaxError | SyntaxError | SyntaxError | Allowed syntax | |
09 |
- | Allowed syntax | Allowed syntax | SyntaxError | Allowed syntax | SyntaxError | SyntaxError | SyntaxError | Allowed syntax | |
0xFF |
- | SyntaxError | - | SyntaxError | SyntaxError | - | SyntaxError | - | SyntaxError | |
{property : false} |
- | SyntaxError | SyntaxError | SyntaxError | SyntaxError | SyntaxError | SyntaxError | SyntaxError | SyntaxError | |
{'property' : false} |
- | SyntaxError | SyntaxError | SyntaxError | SyntaxError | SyntaxError | SyntaxError | SyntaxError | SyntaxError | |
{2 : false} |
- | SyntaxError | - | - | - | - | SyntaxError | - | Allowed syntax | |
{true : false} |
- | SyntaxError | - | - | - | - | SyntaxError | - | Allowed syntax | |
{false : false} |
- | SyntaxError | - | - | - | - | SyntaxError | - | Allowed syntax | |
{null : false} |
- | SyntaxError | - | - | - | - | SyntaxError | - | Allowed syntax | |
{"property" : "value",} |
- | Allowed syntax | SyntaxError | SyntaxError | SyntaxError | SyntaxError | SyntaxError | SyntaxError | Allowed syntax | |
["value", "value",] |
- | Allowed syntax | SyntaxError | SyntaxError | SyntaxError | SyntaxError | SyntaxError | SyntaxError | Allowed syntax | |
[\u000B] |
- | SyntaxError | SyntaxError | Allowed syntax | SyntaxError | SyntaxError | SyntaxError | Allowed syntax | Allowed syntax | |
[\u000C] |
- | SyntaxError | SyntaxError | Allowed syntax | SyntaxError | SyntaxError | SyntaxError | Allowed syntax | Allowed syntax | |
[\u00A0] |
- | SyntaxError | SyntaxError | Allowed syntax | SyntaxError | SyntaxError | SyntaxError | SyntaxError | Allowed syntax | |
[\uFEFF] |
- | SyntaxError | SyntaxError | Allowed syntax | SyntaxError | SyntaxError | SyntaxError | SyntaxError | SyntaxError | |
[\u1680] |
- | SyntaxError | SyntaxError | Allowed syntax | SyntaxError | SyntaxError | SyntaxError | SyntaxError | SyntaxError | |
[\u180E] |
- | SyntaxError | SyntaxError | Allowed syntax | SyntaxError | SyntaxError | SyntaxError | SyntaxError | SyntaxError | |
[\u2000] |
- | SyntaxError | SyntaxError | Allowed syntax | SyntaxError | SyntaxError | SyntaxError | SyntaxError | Allowed syntax | |
[\u2001] |
- | SyntaxError | SyntaxError | Allowed syntax | SyntaxError | SyntaxError | SyntaxError | SyntaxError | Allowed syntax | |
[\u2002] |
- | SyntaxError | SyntaxError | Allowed syntax | SyntaxError | SyntaxError | SyntaxError | SyntaxError | Allowed syntax | |
[\u2003] |
- | SyntaxError | SyntaxError | Allowed syntax | SyntaxError | SyntaxError | SyntaxError | SyntaxError | Allowed syntax | |
[\u2004] |
- | SyntaxError | SyntaxError | Allowed syntax | SyntaxError | SyntaxError | SyntaxError | SyntaxError | Allowed syntax | |
[\u2005] |
- | SyntaxError | SyntaxError | Allowed syntax | SyntaxError | SyntaxError | SyntaxError | SyntaxError | Allowed syntax | |
[\u2006] |
- | SyntaxError | SyntaxError | Allowed syntax | SyntaxError | SyntaxError | SyntaxError | SyntaxError | Allowed syntax | |
[\u2007] |
- | SyntaxError | SyntaxError | Allowed syntax | SyntaxError | SyntaxError | SyntaxError | SyntaxError | Allowed syntax | |
[\u2008] |
- | SyntaxError | SyntaxError | Allowed syntax | SyntaxError | SyntaxError | SyntaxError | SyntaxError | Allowed syntax | |
[\u2009] |
- | SyntaxError | SyntaxError | Allowed syntax | SyntaxError | SyntaxError | SyntaxError | SyntaxError | Allowed syntax | |
[\u200A] |
- | SyntaxError | SyntaxError | Allowed syntax | SyntaxError | SyntaxError | SyntaxError | SyntaxError | Allowed syntax | |
[\u202F] |
- | SyntaxError | SyntaxError | Allowed syntax | SyntaxError | SyntaxError | SyntaxError | SyntaxError | SyntaxError | |
[\u205F] |
- | SyntaxError | SyntaxError | Allowed syntax | SyntaxError | SyntaxError | SyntaxError | SyntaxError | SyntaxError | |
[\u3000] |
- | SyntaxError | SyntaxError | Allowed syntax | SyntaxError | SyntaxError | SyntaxError | SyntaxError | Allowed syntax |
Credits to Christian C. Salvadó, Diego Perini and Juriy "kangax" Zaytsev for their feedback.
