The following object is a valid one in plain Javascript. However, if the same is added to a JSON file, the file does not pass validation. Why is that?
var me
The JSON spec supports numbers as values but explicitly does not support octal or hexidecimal. This is in part to increase interchange between languages. You could just as easily represent 0xFF
as a string, "0xFF"
and parse that out when using it.
From json.org:
A number is very much like a C or Java number, except that the octal and hexadecimal formats are not used.
According to the ECMA-404 Final draft:
A number is a sequence of decimal digits with no superfluous leading zero. It may have a preceding minus sign (U+002D). It may have a fractional part prefixed by a decimal point (U+002E). It may have an exponent, prefixed by e (U+0065) or E (U+0045) and optionally + (U+002B) or – (U+002D). The digits are the code points U+0030 through U+0039.
JSON does not support hexadecimal numbers but they are supported in JSON5. json5.org