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


Posted in PHP onSeptember 16, 2014

本文实例讲述了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 Ajax实现页面无刷新发表评论
Jan 02 PHP
php 随机排序广告的实现代码
May 09 PHP
php中将图片gif,jpg或mysql longblob或blob字段值转换成16进制字符串
Aug 23 PHP
php全局变量和类配合使用深刻理解
Jun 05 PHP
Window下PHP三种运行方式图文详解
Jun 11 PHP
19个超实用的PHP代码片段
Mar 14 PHP
php调用淘宝开放API实现根据卖家昵称获取卖家店铺ID的方法
Jul 29 PHP
PHP用户注册邮件激活账户的实现代码
May 31 PHP
在laravel中使用Symfony的Crawler组件分析HTML
Jun 19 PHP
PHP删除数组中指定值的元素常用方法实例分析【4种方法】
Aug 21 PHP
PHP实现负载均衡session共享redis缓存操作示例
Aug 22 PHP
详解Laravel制作API接口
May 31 PHP
php中使用PHPExcel读写excel(xls)文件的方法
Sep 15 #PHP
PHP常量使用的几个需要注意的地方(谨慎使用PHP中的常量)
Sep 12 #PHP
php修改指定文件后缀的方法
Sep 11 #PHP
MyEclipse常用配置图文教程
Sep 11 #PHP
Linux下PHP安装mcrypt扩展模块笔记
Sep 10 #PHP
PHP下的Oracle客户端扩展(OCI8)安装教程
Sep 10 #PHP
CentOS 6.3下安装PHP xcache扩展模块笔记
Sep 10 #PHP
You might like
PHP实现分页的一个示例
2006/10/09 PHP
PHP递归遍历多维数组实现无限分类的方法
2016/05/06 PHP
Laravel如何友好的修改.env配置文件详解
2017/06/07 PHP
jquery插件tooltipv顶部淡入淡出效果使用示例
2013/12/05 Javascript
jQuery的图片滑块焦点图插件整理推荐
2014/12/07 Javascript
Jquery使用小技巧汇总
2015/12/29 Javascript
JavaScript中实现无缝滚动、分享到侧边栏实例代码
2016/04/06 Javascript
JS封装的选项卡TAB切换效果示例
2016/09/20 Javascript
JavaScript与java语言有什么不同
2016/09/22 Javascript
微信小程序 loading(加载中提示框)实例
2016/10/28 Javascript
js中DOM三级列表(代码分享)
2017/03/20 Javascript
jquery实现用户登陆界面(示例讲解)
2017/09/06 jQuery
vue中element 上传功能的实现思路
2018/07/06 Javascript
vue实现弹框遮罩点击其他区域弹框关闭及v-if与v-show的区别介绍
2018/09/29 Javascript
js实现简单选项卡制作
2020/08/05 Javascript
js+canvas实现图片格式webp/png/jpeg在线转换
2020/08/22 Javascript
JavaScript快速调试的两个技巧
2020/11/04 Javascript
[40:56]2018DOTA2亚洲邀请赛 3.31 小组赛 A组 Liquid vs TNC
2018/04/01 DOTA
python实现将元祖转换成数组的方法
2015/05/04 Python
Python进度条实时显示处理进度的示例代码
2018/01/30 Python
用python写扫雷游戏实例代码分享
2018/05/27 Python
对Python2与Python3中__bool__方法的差异详解
2018/11/01 Python
详解Python3注释知识点
2019/02/19 Python
解决pyecharts在jupyter notebook中使用报错问题
2020/04/23 Python
在Python中使用K-Means聚类和PCA主成分分析进行图像压缩
2020/04/10 Python
英国简约舒适女装品牌:Great Plains
2018/07/27 全球购物
写一个用矩形法求定积分的通用函数
2012/11/08 面试题
文明礼仪小标兵事迹
2014/01/12 职场文书
晚宴邀请函范文
2014/01/15 职场文书
药店主任岗位责任制
2014/02/10 职场文书
恰同学少年观后感
2015/06/08 职场文书
我的生日感言
2015/08/03 职场文书
朋友聚会祝酒词
2015/08/10 职场文书
关于CSS浮动与取消浮动的问题
2021/06/28 HTML / CSS
Python中非常使用的6种基本变量的操作与技巧
2022/03/22 Python
Redis唯一ID生成器的实现
2022/07/07 Redis