Skip to content

@jordanbtucker jordanbtucker released this Mar 11, 2018 · 31 commits to master since this release

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.

Assets 2
You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.