utils-json-parse

1.0.0 • Public • Published

JSON#parse

NPM version Build Status Coverage Status Dependencies

Wraps JSON#parse in a try/catch block.

Installation

$ npm install utils-json-parse

Usage

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'}

Notes

  • 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.

Examples

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 );
}
 
request({
    'method': 'GET',
    'url': 'http://example.com'
}, onResponse );

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

$ node ./examples/index.js

Tests

Unit

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

License

MIT license.

Copyright

Copyright © 2015. Athan Reines.

Package Sidebar

Install

npm i utils-json-parse

Weekly Downloads

240

Version

1.0.0

License

MIT

Last publish

Collaborators

  • kgryte