Yet another try/catch for JSON#parse. This one returns your custom error token value in case of a SyntaxError (default: undefined), and passes all other errors to your custom error handler (default: re-throw).
npm install json-parse-pmb
json-parse-pmb
==============
Yet another try/catch for JSON#parse. This one returns your custom error token
value in case of a SyntaxError (default: undefined), and passes all other
errors to your custom error handler (default: re-throw).
API
---
This module exports one function:
Where json should be a string with data in JSON format,
and opts is an optional config object which supports these keys:
* synErr: What to do in case of a syntax error.
* undefined (default): Return undefined for easy distinction from valid
JSON values like null, false, zero and the empty string.
* any string or false-y value: Return that value.
* true: Throw an error.
* a function: Call it, with one argument, the error object.
* any other value: Fail in unreliable, mysterious ways.
* othErr: What to do in case of a non-syntax error.
* undefined (default) or any false-y value: re-throw the error.
* any other value: like synErr.
Any error that is re-thrown or forwarded to your custom error handler
function…
* is indeed an object. Caught non-objects will be wrapped in an Error.
* has a property input set to the original json argument.
* has a boolean property isSyntaxError.
Usage
-----
see doc/demo/usage.js
from test/usage.js:
:TODO:
``javascript
var jsonParse = require('json-parse-pmb'), bad, opts;
equal(jsonParse('true'), true);
equal(jsonParse('{"abc":123}'), { abc: 123 });
bad = '{abc:123, missing: "quotes around key names"}';
equal(jsonParse(bad, opts), undefined);
opts = { synErr: false };
equal(jsonParse(bad, opts), false);
opts.synErr = { err: 'bad json' };
equal(jsonParse(bad, opts), { err: 'bad json' });
``
License
-------
ISC