我在网上找的一个函数:
function is_json($string)
{
json_decode($string);
return (json_last_error() == JSON_ERROR_NONE);
}
$str = '{id:23,name:"test"}';
$str = "{'id':23,'name':'test'}";
为什么在PHP7,均不是合法的json格式呢??
有没有靠谱的方法??
我在网上找的一个函数:
function is_json($string)
{
json_decode($string);
return (json_last_error() == JSON_ERROR_NONE);
}
$str = '{id:23,name:"test"}';
$str = "{'id':23,'name':'test'}";
为什么在PHP7,均不是合法的json格式呢??
有没有靠谱的方法??
var arr = {id:23,name:'test'}; //键名不用引号,值用单引号,在JS中,这样写都合法
alert(JSON.stringify(arr)); //但合法的JSON字符串应该是stringify后的模样 {"id":23,"name":"test"}
console.log(JSON.parse('{"id":23,"name":"test"}')); //正确
console.log(JSON.parse("{id:23,name:'test'}")); //错误
//PHP的json_decode跟JSON.parse一样不能识别 {id:23,name:'test'} 这种JSON字符串.
1 回答4.1k 阅读✓ 已解决
3 回答1.9k 阅读✓ 已解决
2 回答2.3k 阅读✓ 已解决
1 回答1.4k 阅读✓ 已解决
2 回答2.2k 阅读
1 回答676 阅读✓ 已解决
2 回答608 阅读✓ 已解决
因为你所提供的字符串都不是标准的 JSON, 正确的 JSON 所有 key 都是使用 双引号 包裹的字符串。更多的 JSON 规范可以看 JSON官网。
你可以试试:
而在 PHP 各版本表现不一致是因为 PHP 换了 JSON 的底层实现,现在版本对 JSON 的要求更标准了。
准确来说,这不是 PHP7 的特性,而是 PHP 5.6 的新特性。详情可以参考 官网说明。