How to determine whether a string is valid JSON?

前端 未结 6 1414
自闭症患者
自闭症患者 2020-12-15 03:12

Does anyone know of a robust (and bullet proof) is_JSON function snippet for PHP? I (obviously) have a situation where I need to know if a string is JSON or not.

Hmm

相关标签:
6条回答
  • 2020-12-15 03:40

    If you are using the built in json_decode PHP function, json_last_error returns the last error (e.g. JSON_ERROR_SYNTAX when your string wasn't JSON).

    Usually json_decode returns null anyway.

    0 讨论(0)
  • 2020-12-15 03:42
    $this->post_data = json_decode( stripslashes( $post_data ) );
      if( $this->post_data === NULL )
       {
       die( '{"status":false,"msg":"The post_data parameter must be valid JSON"}' );
       }
    
    0 讨论(0)
  • 2020-12-15 03:48

    For my projects I use this function (please read the "Note" on the json_decode() docs).

    Passing the same arguments you would pass to json_decode() you can detect specific application "errors" (e.g. depth errors)

    With PHP >= 5.6

    // PHP >= 5.6
    function is_JSON(...$args) {
        json_decode(...$args);
        return (json_last_error()===JSON_ERROR_NONE);
    }
    

    With PHP >= 5.3

    // PHP >= 5.3
    function is_JSON() {
        call_user_func_array('json_decode',func_get_args());
        return (json_last_error()===JSON_ERROR_NONE);
    }
    

    Usage example:

    $mystring = '{"param":"value"}';
    if (is_JSON($mystring)) {
        echo "Valid JSON string";
    } else {
        $error = json_last_error_msg();
        echo "Not valid JSON string ($error)";
    }
    
    0 讨论(0)
  • 2020-12-15 03:48

    Doesn't json_decode() with a json_last_error() work for you? Are you looking for just a method to say "does this look like JSON" or actually validate it? json_decode() would be the only way to effectively validate it within PHP.

    0 讨论(0)
  • 2020-12-15 04:00

    What about using json_decode, which should return null if the given string was not valid JSON-encoded data ?

    See example 3 on the manual page :

    // the following strings are valid JavaScript but not valid JSON
    
    // the name and value must be enclosed in double quotes
    // single quotes are not valid 
    $bad_json = "{ 'bar': 'baz' }";
    json_decode($bad_json); // null
    
    // the name must be enclosed in double quotes
    $bad_json = '{ bar: "baz" }';
    json_decode($bad_json); // null
    
    // trailing commas are not allowed
    $bad_json = '{ bar: "baz", }';
    json_decode($bad_json); // null
    
    0 讨论(0)
  • 2020-12-15 04:01

    This is the best and efficient way

    function isJson($string) {
        return (json_decode($string) == null) ? false : true;
    }
    
    0 讨论(0)
提交回复
热议问题