php json 不带引号,php使用json与js交换数据——不带双引号的json数据解析

PHP和Javascript在某些方面总是惊人的相似,可是有时候却让人摸不着头脑。

案例1:Javascript原生支持的json格式,在编码上比PHP体积小,例如

$arr = array(array("name" => "php"));

$json = json_encode($arr);

echo $json;

//会输出[{"name":"php"}]

?>

而在Js中,上面的案例[{"name":"php"}]是可以被任何浏览器识别的,但是Javascript还支持更简单的写法var string = [{name:"php"}];

js可以省略属性名双引号,所以js占用体积小。可是,当我们使用js构造的json字符没有双引号直接传递给php之后,例如:

$json = '[{name:"php"}]';

$brr = json_decode($json, true);

var_dump($brr);

//坑爹的php竟然输出NULL

?>

介于这两种语言的差异,可以使用正则表达式来修正。

$json = '[{name:"php"}]';

$php = preg_replace('/(\w+)\s*:\s*/is', '"$1":', $json);

$crr = json_decode($php, true);

//这样就能正确解析js传入的json了

当然,如果你希望js从php获取的json的key不带双引号以节省传输量,还可以这样:

$arr = array(array("name" => "php"));

$json = json_encode($arr);

$js = preg_replace('/"(\w+)"\s*:\s*/is', '$1:', $json);

echo $js;

//将会输出:[{name:"php"}]

重大更新:如果你的数据非常简单,键值对中没有冒号,单双引号


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部