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 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}' );
    // returns <SyntaxError>