Changelog
v1.0.0 [[code][c1.0.0], [diff][d1.0.0]]
This release includes major internal changes and public API enhancements.
Major: JSON11 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: JSON11 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 JSON11 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 toJSON11
method on objects and, if it exists,
stringifies its return value instead of the object. toJSON11
overrides
toJSON
if they both exist.
New: To require
or import
JSON11 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 JSON11 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 JSON11
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.
toJSON11(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.