JSON字符串key缺少引号的解决方法
JSON字符串是key:value形式的字符串,正常key是由双引号括起来的。
例如:
<?php $data = array('name'=>'fdipzone'); echo json_encode($data); // {"name":"fdipzone"} print_r(json_decode(json_encode($data), true)); //Array ( [name] => fdipzone ) ?>
但如果json字符串的key缺少双引括起来,则json_decode会失败。
<?php $str = '{"name":"fdipzone"}'; var_dump(json_decode($str, true)); // array(1) { ["name"]=> string(8) "fdipzone" } $str1 = '{name:"fdipzone"}'; var_dump(json_decode($str1, true)); // NULL ?>
解决方法:判断是否存在缺少双引括起来的key,如缺少则先用正则替换为"key",再进行json_decode操作。
<?php /** 兼容key没有双引括起来的JSON字符串解析 * @param String $str JSON字符串 * @param boolean $mod true:Array,false:Object * @return Array/Object */ function ext_json_decode($str, $mode=false){ if(preg_match('/\w:/', $str)){ $str = preg_replace('/(\w+):/is', '"$1":', $str); } return json_decode($str, $mode); } $str = '{"name":"fdipzone"}'; var_dump(ext_json_decode($str, true)); // array(1) { ["name"]=> string(8) "fdipzone" } $str1 = '{name:"fdipzone"}'; var_dump(ext_json_decode($str1, true)); // array(1) { ["name"]=> string(8) "fdipzone" } ?>
本文讲解了关于JSON字符串key缺少双引号的解决方法 的讲解,更多相关内容请关注php中文网。
相关推荐:
The above is the detailed content of Explanation on the solution to the problem of missing double quotes in JSON string key. For more information, please follow other related articles on the PHP Chinese website!