jsonext
v1.1.0
Published
An extension of JSON that supports the Next gen features
Downloads
18
Maintainers
Readme
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:
// Register the .jsonext file extension.
require('jsonext/register')
// Load a JSONext file directly.
const config = require('./config.jsonext')
Current features
JSON5 syntax
{
// comments
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}"` }