PHP 判断 字符串 是JSON
封装is_json函数判断是否JSON,
// is_json('123'); AI回答,未匹配 function is_json($string) { json_decode($string); return (json_last_error() == JSON_ERROR_NONE); }
给出比较完美
function is_json($string, $assoc = true){
//$string可能是数组,对象is_object(),以及资源is_resource();
if(!is_string($string)){
return false;
}
$data = json_decode($string, $assoc);
//json_decode未报错,但有可能是整型,浮点型
if(json_last_error() != JSON_ERROR_NONE || is_int($data) || is_float($data)){
return false;
}
return true;
}
//另外一个版本
function isJson($string = '', $assoc = true){
if(is_string($string)){
$data = json_decode($string, $assoc);
if(($data && is_object($data)) || (is_array($data) && !empty($data))){
return true;
}
}
return false;
}
//json_validate(); //PHP8增加函数
//测试
$arr = array(
'a' => '{"a":"a1","b":"b1"}', //是JSON
'b' => "{\"a\":\"a1\",\"b\":\"b1\"}", //是JSON
'c' => '123', //不是JSON
'd' => 123, //不是JSON
'e' => Null, //不是JSON
'f' => false, //不是JSON
'g' => true, //不是JSON
'h' => '\"a\":\"a1\",\"b\":\"b1\"}', //不是JSON
'i' => 123456789012345678901234567890, //不是JSON
'j' => '123456789012345678901234567890', //不是JSON
'k' => '90.123', //不是JSON
'l' => 90.123, //不是JSON
'm' => array('aa' => 'bb'), //不是JSON
'n' => array("aaa" => "bbb"), //不是JSON
'0' => 1, //不是JSON
'p' => '1', //不是JSON
'q' => 0, //不是JSON
'r' => '0', //不是JSON
);
foreach($arr as $key => $val){
if(is_json($val)){
echo $key . '-' . $val . ' 是JSON<hr>';
}else{
echo $key . ' 不是JSON<hr>';
}
}
$data = new stdClass();
var_dump(is_json($data)); //不是JSON
echo '<hr>';
$data = fopen('php://stdin', 'r');
var_dump(is_json($data)); //不是JSON
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通