Relaxed JSON is strict superset JSON, relaxing strictness of valilla JSON
npm install relaxed-json




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".
- 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
There is rjson executable†
``sh
$ 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.
- 1.0.1 — 2017-03-08 — Meteor compatibility
- #9
#14
#15
- 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 executablemake
- also depedencies update
- jscs style check
- 0.2.6 Dependencies update
- 0.2.5 Use $
- 0.2.4 Maintenance release
- 0.2.3 Bugfixes
- is valid identifier characterCR
- single line comments may end with and CRLF alsorjson.parse`
- 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
- 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.
- js-yaml