relaxed-json
v1.0.3
Published
Relaxed JSON is strict superset JSON, relaxing strictness of valilla JSON
Downloads
388,310
Readme
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 */
→ - 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 wellRJSON.parse(text : string, reviver : function | opts : obj) : obj
. Parse the RJSON text, virtuallyJSON.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 reviverrelaxed
: 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 errorsduplicate
: 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
andCRLF
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 (!)
- overloaded
- 0.1.1 RJSON.parse
- 0.1.0 Initial release
Related projects
For truly human writable configuration consider using YAML.