Parse JSON

Parse a string as JSON.

Usage

var parseJSON = require( '@stdlib/utils/parse-json' );

parseJSON( str[, reviver] )

Parses a string as JSON.

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

If unable to parse a string as JSON, the function returns an error.

var out = parseJSON( 'beep' );
// returns <SyntaxError>

To transform the string being parsed, provide a reviver.

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

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

Notes

  • In contrast to the native JSON.parse(), this implementation throws a TypeError if provided any value which is not a string.

    var out = JSON.parse( null );
    // returns null
    
    out = parseJSON( null );
    // throws <TypeError>
    
  • In contrast to the native JSON.parse(), this implementation does not throw a SyntaxError if unable to parse a string as JSON.

    var out = parseJSON( '{"beep":"boop}' );
    // returns <SyntaxError>
    
    out = JSON.parse( '{"beep":"boop}' );
    // throws <SyntaxError>
    
  • In contrast to the native JSON.parse(), this implementation throws a TypeError if provided a reviver argument which is not a function.

    var out = JSON.parse( '{"a":"b"}', [] );
    // returns {'a':'b'}
    
    out = parseJSON( '{"a":"b"}', [] );
    // throws <TypeError>
    

Examples

var parseJSON = require( '@stdlib/utils/parse-json' );

var bool;
var out;

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

out = parseJSON( '3.14' );
// returns 3.14

out = parseJSON( 'true' );
// returns true

out = parseJSON( 'null' );
// returns null

out = parseJSON( '{"beep":"boop}' );
bool = ( out instanceof Error );
// returns true