Wraps JSON#parse in a try/catch block.

Usage no npm install needed!

<script type="module">
  import utilsJsonParse from 'https://cdn.skypack.dev/utils-json-parse';



NPM version Build Status Coverage Status Dependencies

Wraps JSON#parse in a try/catch block.


$ npm install utils-json-parse


var parse = require( 'utils-json-parse' );

parse( value[, reviver] )

Wraps JSON#parse in a try/catch block.

var out = parse( '{"beep":"boop"}' );
// returns {'beep':'boop'}

out = parse( '{beep:boop"}' );
// returns <SyntaxError>

The API is the same as JSON#parse. Hence, to use a custom reviver function

var out;

function reviver( key, value ) {
    if ( key === '' ) {
        return value;
    if ( key === 'beep' ) {
        return value;

out = parse( '{"beep":"boop","a":"b"}', reviver );
// returns {'beep':'boop'}


  • This is provided as a standalone module to trap errors encountered while parsing values of unknown type (e.g., HTTP responses from 3rd party APIs) and to isolate the try/catch block.
  • The presence of try/catch within any function prevents JavaScript compiler optimization. By isolating the try/catch block, we minimize the extent of optimization hell.


var request = require( 'request' ),
    parse = require( 'utils-json-parse' );

function onResponse( error, response, body ) {
    var out;
    if ( error ) {
        return done( error );
    out = parse( body );
    if ( out instanceof Error ) {
        return done( out );
    return done( null, out );

function done( error, data ) {
    if ( error ) {
        return console.error( error.message );
    console.log( data );

    'method': 'GET',
    'url': 'http://example.com'
}, onResponse );

To run the example code from the top-level application directory,

$ node ./examples/index.js



Unit tests use the Mocha test framework with Chai assertions. To run the tests, execute the following command in the top-level application directory:

$ make test

All new feature development should have corresponding unit tests to validate correct functionality.

Test Coverage

This repository uses Istanbul as its code coverage tool. To generate a test coverage report, execute the following command in the top-level application directory:

$ make test-cov

Istanbul creates a ./reports/coverage directory. To access an HTML version of the report,

$ make view-cov


MIT license.


Copyright © 2015. Athan Reines.