JSONext
An extention of JSON that supports Next gen features.
Usage
Node
npm install --save jsonext
const JSONext = require('jsonext')
Browser
Using the unpkg CDN.
<script src="https://unpkg.com/jsonext/dist/jsonext.js"></script>
Using npm.
npm install --save jsonext
<script src="/node_modules/jsonext/dist/jsonext.js"></script>
Bower
JSONext is not registered with Bower because it requires committing generated
files to the the Git repository, which is a bad thing.
API
The JSONext API is compatible with the JSON API.
JSONext.parse(text [, reviver])
Parses JSONext text into an ECMAScript value.
JSONext.stringify(value [, replacer [, space]])
Returns a string in JSONext format representing an ECMAScript value.
File extension
JSONext uses the file extension .jsonext
. You can require
JSONext files
with the following:
require('jsonext/register')
const config = require('./config.jsonext')
Current features
JSON5 syntax
{
unquoted: 'and you can quote me on that',
singleQuotes: 'I can use "double quotes" here',
lineBreaks: "Look, Mom!\
No \\n's!",
hexadecimal: 0xdecaf,
leadingDecimalPoint: .8675309, andTrailing: 8675309.,
positiveSign: +1,
trailingComma: 'in objects', andIn: ['arrays',],
"backward compatible": "with JSON",
}
Infinity
and NaN
are supported for backward compatibility, but they are
deprecated and produce warnings.
Unicode property names
Including unicode escapes. The following documents are equivalent.
{ ùńîċõďë: '¡ celebridad internacional !' }
{ \u00f9\u0144\u00ee\u010b\u00f5\u010f\u00eb: "¡ celebridad internacional !" }
Unicode code point escapes in strings
{ surrogatePairs: '\u{20BB7}' }
Hex escapes in strings
{ hexEscapes: 'No \x65\x73\x63\x61\x70\x65 from reality' }
Template literals without substitutions
{ templates: `Jane said, "It's great!"` }
The following document is invalid.
{ invalidTemplate: `Jane said, "${message}"` }