jsof
liberal JSON
Last updated 3 years ago by drom .
MIT · Repository · Bugs · Original npm · Tarball · package.json
$ cnpm install jsof 
SYNC missed versions from official npm registry.

JSOF (liberal JSON)

NPM version Travis Appveyor 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.

Current Tags

  • 0.3.2                                ...           latest (2 years ago)

15 Versions

  • 0.3.2                                ...           2 years ago
  • 0.3.1                                ...           3 years ago
  • 0.3.0                                ...           4 years ago
  • 0.2.2                                ...           4 years ago
  • 0.2.1                                ...           5 years ago
  • 0.2.0                                ...           5 years ago
  • 0.1.1                                ...           5 years ago
  • 0.1.0                                ...           5 years ago
  • 0.0.7                                ...           5 years ago
  • 0.0.6                                ...           5 years ago
  • 0.0.5                                ...           5 years ago
  • 0.0.4                                ...           5 years ago
  • 0.0.3                                ...           5 years ago
  • 0.0.2                                ...           5 years ago
  • 0.0.1                                ...           5 years ago
Maintainers (1)
Downloads
Today 0
This Week 0
This Month 0
Last Day 0
Last Week 0
Last Month 0
Dependencies (4)
Dev Dependencies (6)
Dependents (2)

Copyright 2014 - 2016 © taobao.org |