Maison >développement back-end >tutoriel php >Explication sur la solution au problème des guillemets doubles manquants dans la clé de chaîne JSON

Explication sur la solution au problème des guillemets doubles manquants dans la clé de chaîne JSON

jacklove
jackloveoriginal
2018-06-09 11:33:283772parcourir

JSON字符串key缺少引号的解决方法

JSON字符串是key:value形式的字符串,正常key是由双引号括起来的

例如:

<?php
$data = array(&#39;name&#39;=>&#39;fdipzone&#39;);
echo json_encode($data);                        // {"name":"fdipzone"}
print_r(json_decode(json_encode($data), true)); //Array ( [name] => fdipzone )
?>

但如果json字符串的key缺少双引括起来,则json_decode会失败。

<?php
$str = &#39;{"name":"fdipzone"}&#39;;
var_dump(json_decode($str, true)); // array(1) { ["name"]=> string(8) "fdipzone" }
$str1 = &#39;{name:"fdipzone"}&#39;;
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(&#39;/\w:/&#39;, $str)){
        $str = preg_replace(&#39;/(\w+):/is&#39;, &#39;"$1":&#39;, $str);
    }
    return json_decode($str, $mode);
}
$str = &#39;{"name":"fdipzone"}&#39;;
var_dump(ext_json_decode($str, true)); // array(1) { ["name"]=> string(8) "fdipzone" }
$str1 = &#39;{name:"fdipzone"}&#39;;
var_dump(ext_json_decode($str1, true)); // array(1) { ["name"]=> string(8) "fdipzone" }
?>

本文讲解了关于JSON字符串key缺少双引号的解决方法 的讲解,更多相关内容请关注php中文网。

相关推荐:

关于mysql 严格模式 Strict Mode的说明讲解

php使用explode分割字符串新手容易忽略的问题的讲解

关于mysql互换表中两列数据方法的讲解


Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn