如何确定一个string是否是有效的JSON?

有谁知道一个强大的(和防弹)is_JSON函数代码为PHP? 我(显然)有一个情况,我需要知道一个string是否是JSON。

嗯,也许运行它通过JSONLint请求/响应,但似乎有点矫枉过正。

如果使用的是json_decode PHP函数, json_last_error返回最后一个错误(例如JSON_ERROR_SYNTAX当你的string不是JSON时)。

通常json_decode无论如何json_decode返回null

怎么样使用json_decode ,如果给定的string无效JSON编码的数据应该返回null

请参阅手册页上的示例3:

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

对于我的项目,我使用这个函数(请阅读json_decode()文档中的“ 注释 ”)。

通过将相同的parameter passing给json_decode(),您可以检测特定的应用程序“错误”(例如深度错误)

用PHP> = 5.6

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

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

用法示例:

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

json_decode()json_last_error()工作吗? 你正在寻找一种方法来说“这看起来像JSON”还是实际validation它? json_decode()将是在PHP中有效validation它的唯一方法。

 $ this-> post_data = json_decode(stripslashes($ post_data));
  如果($ this-> post_data === NULL)
    {
    die('{“status”:false,“msg”:“post_data参数必须是有效的JSON”}');
    }