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, perhaps run it through a JSONLint request/response, but that seems a bit overkill.
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, perhaps run it through a JSONLint request/response, but that seems a bit overkill.
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.
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
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.
This is the best and efficient way
function isJson($string) {
return (json_decode($string) == null) ? false : true;
}