json-parse-pmb
v1.0.1
Published
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).
Downloads
43
Maintainers
Readme
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:
parseJson(json[, opts])
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): Returnundefined
for easy distinction from valid JSON values likenull
,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 originaljson
argument. - has a boolean property
isSyntaxError
.
Usage
see doc/demo/usage.js from test/usage.js: :TODO:
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