php json validation code-snippets jsonlint

php - ¿Cómo determinar si una cadena es JSON válida?



validation code-snippets (5)

¿Alguien sabe de un fragmento de función is_JSON robusto (ya prueba de balas) para PHP? Yo (obviamente) tengo una situación en la que necesito saber si una cadena es JSON o no.

Hmm, tal vez ejecutarlo a través de una solicitud / respuesta JSONLint , pero eso parece un poco exagerado.


¿ json_decode() no json_decode() con json_last_error() ? ¿Está buscando solo un método para decir "¿se ve esto como JSON" o realmente validarlo? json_decode() sería la única forma de validarlo efectivamente dentro de PHP.


¿Qué pasa con el uso de json_decode , que debería devolver null si la cadena dada no era válida con datos codificados en JSON?

Vea el ejemplo 3 en la página del manual:

// 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


Para mis proyectos, uso esta función (lea la " Nota " en json_decode() documentos).

Al pasar los mismos argumentos que pasaría a json_decode (), puede detectar "errores" de aplicación específicos (por ejemplo, errores de profundidad)

Con PHP> = 5.6

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

Con 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); }

Ejemplo de uso:

$mystring = ''{"param":"value"}''; if (is_JSON($mystring)) { echo "Valid JSON string"; } else { $error = json_last_error_msg(); echo "Not valid JSON string ($error)"; }



$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"}'' ); }