rj

relaxed-json

Relaxed JSON is strict superset JSON, relaxing strictness of vanilla JSON

Showing:

Popularity

Downloads/wk

101K

GitHub Stars

60

Maintenance

Last Commit

3yrs ago

Contributors

3

Package

Dependencies

2

Size (min+gzip)

2.3KB

License

BSD-3-Clause

Type Definitions

Tree-Shakeable

No?

Categories

Readme

Relaxed JSON

Build Status NPM version Dependency Status devDependency Status Code Climate

Are you frustrated that you cannot add comments into your configuration JSON Relaxed JSON is a simple solution. Small JavaScript library with only one exposed function RJSON.transform(text : string) : string (and few convenient helpers).

Relaxed JSON (modified BSD license) is a strict superset of JSON, relaxing strictness of vanilla JSON. Valid, vanilla JSON will not be changed by RJSON.transform. But there are few additional features helping writing JSON by hand.

  • Comments are stripped : // foo and /* bar */ . Comments are converted into whitespace, so your formatting is preserved.
  • Trailing comma is allowed : [1, 2, 3, ][1, 2, 3]. Works also in objects { "foo": "bar", }{ "foo": "bar" }.
  • Identifiers are transformed into strings : { foo: bar }{ "foo": "bar" }.
  • Single quoted strings are allowed : 'say "Hello"'"say \"Hello\"".
  • More different characters is supported in identifiers: foo-bar"foo-bar".

API

  • RJSON.transform(text : string) : string. Transforms Relaxed JSON text into JSON text. Doesn't verify (parse) the JSON, i.e result JSON might be invalid as well
  • RJSON.parse(text : string, reviver : function | opts : obj) : obj. Parse the RJSON text, virtually JSON.parse(JSON.transform(text), reviver). You could pass a reviver function or an options object as the second argument. Supported options:
    • reviver: you could still pass a reviver
    • relaxed: use relaxed version of JSON (default: true)
    • warnings: use relaxed JSON own parser, supports better error messages (default: false)
    • tolerant: wait until the end to throw errors
    • duplicate: fail if there are duplicate keys in objects

Executable

There is rjson executable

$ sudo npm install -g relaxed-json

$ rjson relaxed-json.js
Error on line 27: Unexpected character: (
(function () {

% rjson package.json
{
  "name": "relaxed-json",
  "description": "Relaxed JSON is strict superset JSON, relaxing strictness of valilla JSON",

rjson is similar to python -mjson.tool.

Changelog

  • 1.0.1 — 2017-03-08 — Meteor compatibility
  • 1.0.0 — 2015-07-13 — Stable release
    • Forward slashes bug fixed
  • 0.2.9 Dependencies bump
  • 0.2.8 Dev dependencies update
  • 0.2.7 rjson executable
    • also depedencies update
    • jscs style check
  • 0.2.6 Dependencies update
  • 0.2.5 Use make
  • 0.2.4 Maintenance release
  • 0.2.3 Bugfixes
    • $ is valid identifier character
    • single line comments may end with CR and CRLF also
  • 0.2.2 Bugfix
  • 0.2.1 Code reogranization
    • More though into toleration, handles valid json without colons and commas
    • trailing comma stripping is more strict
  • 0.2.0 Shiny new features
    • overloaded rjson.parse
    • tolerating parser support
    • duplicate key warning
    • test suite (!)
  • 0.1.1 RJSON.parse
  • 0.1.0 Initial release

For truly human writable configuration consider using YAML.

Rate & Review

Great Documentation0
Easy to Use0
Performant0
Highly Customizable0
Bleeding Edge0
Responsive Maintainers0
Poor Documentation0
Hard to Use0
Slow0
Buggy0
Abandoned0
Unwelcoming Community0
100