PHP处理JSON字符串key缺少双引号的解决方法

 更新时间:2014年09月16日 09:21:25   投稿:shichen2014  
这篇文章主要介绍了PHP处理JSON字符串key缺少双引号的解决方法,是非常常见的一类错误处理情况,需要的朋友可以参考下

本文实例讲述了PHP处理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" }
?>

希望本文所述对大家PHP程序设计的学习有所帮助。

相关文章

  • php 判断数组是几维数组

    php 判断数组是几维数组

    php 判断数组是几维数组,需要的朋友可以参考一下
    2013-03-03
  • 对PHP新手的一些建议(PHP学习经验总结)

    对PHP新手的一些建议(PHP学习经验总结)

    这篇文章主要介绍了对PHP新手的一些建议,这是本人学习PHP过程中的经验总结,一切都源自切身体会,需要的朋友可以参考下
    2014-08-08
  • php使用SAE原生Mail类实现各种类型邮件发送的方法

    php使用SAE原生Mail类实现各种类型邮件发送的方法

    这篇文章主要介绍了php使用SAE原生Mail类实现各种类型邮件发送的方法,结合实例形式分析了SAE平台解决邮件发送问题的相关操作技巧,需要的朋友可以参考下
    2016-10-10
  • PHP二维数组去重实例分析

    PHP二维数组去重实例分析

    这篇文章主要介绍了PHP二维数组去重的方法,结合实例形式分析了php数组遍历、判断及去除重复项的相关操作技巧,需要的朋友可以参考下
    2016-11-11
  • php使用CutyCapt实现网页截图保存的方法

    php使用CutyCapt实现网页截图保存的方法

    这篇文章主要介绍了php使用CutyCapt实现网页截图保存的方法,结合实例形式详细分析了CutyCapt的下载、安装及php使用CutyCapt进行截图与保存的相关操作技巧,需要的朋友可以参考下
    2016-10-10
  • php生成rss类用法实例

    php生成rss类用法实例

    这篇文章主要介绍了php生成rss类用法,实例分析了使用rssbuilder.class.php类文件生成rss的技巧,需要的朋友可以参考下
    2015-04-04
  • PHP结合vue导出excel出现乱码的解决方法分享

    PHP结合vue导出excel出现乱码的解决方法分享

    这篇文章主要为大家详细介绍了PHP结合vue导出excel出现乱码的解决方法,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2023-02-02
  • php截取指定2个字符之间字符串的方法

    php截取指定2个字符之间字符串的方法

    这篇文章主要介绍了php截取指定2个字符之间字符串的方法,通过一个简单的自定义函数来实现这一功能,主要涉及php中stripos、substr等方法的使用技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-04-04
  • php版微信返回用户text输入的方法

    php版微信返回用户text输入的方法

    这篇文章主要介绍了php版微信返回用户text输入的方法,结合实例形式分析了php实现的微信解析及返回用户输入数据的相关操作技巧,需要的朋友可以参考下
    2016-11-11
  • 浅析PHP7的多进程及实例源码

    浅析PHP7的多进程及实例源码

    在本篇内容里小编给大家分享了关于PHP7之多进程的相关概念和实例代码知识点,需要的朋友们跟着学习下。
    2019-04-04

最新评论