Changelog
v2.0.0 [[code][c2.0.0], [diff][d2.0.0]]
Major: JSON5 officially supports Node.js v6 and later. Support for Node.js v4 has been dropped. Since Node.js v6 supports ES5 features, the code has been rewritten in native ES5, and the dependence on Babel has been eliminated.
New: Support for Unicode 10 has been added.
New: The test framework has been migrated from Mocha to Tap.
New: The browser build at dist/index.js
is no longer minified by default. A
minified version is available at dist/index.min.js
. ([#181])
Fix: The warning has been made clearer when line and paragraph separators are used in strings.
Fix: package.json5
has been restored, and it is automatically generated and
committed when the version is bumped. A new build-package
NPM script has
been added to facilitate this.
Changelog
v1.0.1 [[code][c1.0.1], [diff][d1.0.1]]
This release includes a bug fix and minor change.
Fix: parse
throws on unclosed objects and arrays.
New: package.json5
has been removed until an easier way to keep it in sync
with package.json
is found.
Changelog
v1.0.0 [[code][c1.0.0], [diff][d1.0.0]]
This release includes major internal changes and public API enhancements.
Major: JSON5 officially supports Node.js v4 and later. Support for Node.js v0.10 and v0.12 have been dropped.
New: Unicode property names and Unicode escapes in property names are supported. ([#1])
New: stringify
outputs trailing commas in objects and arrays when a space
option is provided. ([#66])
New: JSON5 allows line and paragraph separator characters (U+2028 and U+2029) in strings in order to be compatible with JSON. However, ES5 does not allow these characters in strings, so JSON5 gives a warning when they are parsed and escapes them when they are stringified. ([#70])
New: stringify
accepts an options object as its second argument. The
supported options are replacer
, space
, and a new quote
option that
specifies the quote character used in strings. ([#71])
New: The CLI supports STDIN and STDOUT and adds --out-file
, --space
, and
--validate
options. See json5 --help
for more information. ([#72], [#84],
and [#108])
New: In addition to the white space characters space \t
, \v
, \f
, \n
,
\r
, and \xA0
, the additional white space characters \u2028
, \u2029
,
and all other characters in the Space Separator Unicode category are allowed.
New: In addition to the character escapes \'
, \"
, \\
, \b
, \f
, \n
,
\r
, and \t
, the additional character escapes \v
and \0
, hexadecimal
escapes like \x0F
, and unnecessary escapes like \a
are allowed in string
values and string property names.
New: stringify
outputs strings with single quotes by default but
intelligently uses double quotes if there are more single quotes than double
quotes inside the string. (i.e. stringify('Stay here.')
outputs
'Stay here.'
while stringify('Let\'s go.')
outputs "Let's go."
)
New: When a character is not allowed in a string, stringify
outputs a
character escape like \t
when available, a hexadecimal escape like \x0F
when the Unicode code point is less than 256, or a Unicode character escape
like \u01FF
, in that order.
New: stringify
checks for a toJSON5
method on objects and, if it exists,
stringifies its return value instead of the object. toJSON5
overrides
toJSON
if they both exist.
New: To require
or import
JSON5 files, use require('json5/lib/register')
or import 'json5/lib/register'
. Previous versions used json5/lib/require
,
which still exists for backward compatibility but is deprecated and will give
a warning.
New: To use JSON5 in browsers, use the file at dist/index.js
or
https://unpkg.com/json5@^1.0.0
.
Fix: stringify
properly outputs Infinity
and NaN
. ([#67])
Fix: isWord
no longer becomes a property of JSON5
after calling
stringify
. ([#68] and [#89])
Fix: stringify
no longer throws when an object does not have a prototype
.
([#154])
Fix: stringify
properly handles the key
argument of toJSON(key)
methods.
toJSON5(key)
follows this pattern.
Fix: stringify
accepts Number
and String
objects as its space
argument.
Fix: In addition to a function, stringify
also accepts an array of keys to
include in the output as its replacer
argument. Numbers, Number
objects,
and String
objects will be converted to a string if they are given as array
values.