0.5.0 • Published 3 years ago

jsof v0.5.0

Weekly downloads
22
License
MIT
Repository
github
Last release
3 years ago

JSOF (liberal JSON)

NPM version Tests Coveralls

Uses esprima, escodegen or shift-{parser, codegen} to parse and stringify an JavaScript values.

Why?

Reason 1

Do you think, that JSON is a bit verbose? restrictive? hard to comment?

Remember, you wrote something like the text below, gave it to JSON.parse() and got 30 errors? one by one?

{
    unquoted_key: "keys must be quoted",
    a1: ["extra comma",],
    a2: ["double extra comma",,],
    // single line comment
    "Illegal expression": 1 + 2,
    "Illegal invocation": alert(),
    "Numbers cannot have leading zeroes": 013,
    "Numbers cannot be hex": 0x14,
    a3: [
        "Illegal backslash escape: \x15",
        "Illegal backslash escape: \017",
        [[[[[[[[[[[[[[[[[[[["Too deep"]]]]]]]]]]]]]]]]]]]],
        "Bad value", truth,
        'single quote',
        /* multi-line comment */
        "    tab    character    in    string    ",
        "tab\   character\   in\  string\  ",
        "line\
        break"
    ],
    "Extra comma": true,
}

So, now you can use jsof.parse(), and everything is fine!

Reason 2

JSON.stringify(obj, null, 2);

{
  "a": [
    {"b": [
      [
        "string"
      ]
    ]}
  ],
  "c": 42
}

jsof.stringify(obj);

{
  a: [{b: 'string'}],
  c: 42
}

Reason 3

colors

Reason 4

References

Reason 5

no eval() no Yaml

Reason 6

Better error messages.

Use

Node.js

npm i jsof --save
var jsof = require('jsof');

API

jsof.parse()

jsof.p()

The jsof.parse() method parses a JS value string and returns a JavaScript value. Passes all 3 JSON pass tests. Also passes 18 of 33 JSON fail tests.

value = jsof.parse(text)

jsof.stringify()

jsof.s()

The jsof.stringify() method converts a JavaScript value to a JS string.

text = jsof.stringify(value)

jsof.shift.parse()

jsof.shift.p()

The same as jsof.parse() but using shift-* tools.

jsof.shift.stringify()

jsof.shift.s()

The same as jsof.stringify() but using shift-* tools.

Testing

npm test

License

MIT LICENSE.

0.5.0

3 years ago

0.3.2

7 years ago

0.3.1

8 years ago

0.3.0

8 years ago

0.2.2

8 years ago

0.2.1

10 years ago

0.2.0

10 years ago

0.1.1

10 years ago

0.1.0

10 years ago

0.0.7

10 years ago

0.0.6

10 years ago

0.0.5

10 years ago

0.0.4

10 years ago

0.0.3

10 years ago

0.0.2

10 years ago

0.0.1

10 years ago