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 aspace
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 arereplacer
,space
, and a newquote
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. Seejson5 --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.'
whilestringify('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 atoJSON5
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
orimport
JSON5 files, userequire('json5/lib/register')
orimport 'json5/lib/register'
. Previous versions usedjson5/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 outputsInfinity
andNaN
. (#67) -
Fix:
isWord
no longer becomes a property ofJSON5
after calling
stringify
. (#68 and #89) -
Fix:
stringify
no longer throws when an object does not have aprototype
.
(#154) -
Fix:
stringify
properly handles thekey
argument oftoJSON(key)
methods.
toJSON5(key)
follows this pattern. -
Fix:
stringify
acceptsNumber
andString
objects as itsspace
argument. -
Fix: In addition to a function,
stringify
also accepts an array of keys to
include in the output as itsreplacer
argument. Numbers,Number
objects,
andString
objects will be converted to a string if they are given as array
values.