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 相关文章推荐
服务器web工具 php环境下
Dec 29 PHP
PHP二维数组的去重问题解析
Jul 17 PHP
PHP中使用unset销毁变量并内存释放问题
Jul 05 PHP
又一个PHP实现的冒泡排序算法分享
Aug 21 PHP
PHP获取指定月份第一天和最后一天的方法
Jul 18 PHP
PHP微信API接口类
Aug 22 PHP
PHP串行化与反串行化实例分析
Dec 27 PHP
PHP实现移除数组中为空或为某值元素的方法
Jan 07 PHP
PHP重定向与伪静态区别
Feb 19 PHP
PHP工厂模式简单实现方法示例
May 23 PHP
TP5框架实现自定义分页样式的方法示例
Apr 05 PHP
PHP高并发和大流量解决方案整理
Mar 09 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下HTTP Response中的Chunked编码实现方法
2008/11/19 PHP
php简单实现屏蔽指定ip段用户的访问
2015/04/29 PHP
PHP生成制作验证码的简单实例
2016/06/12 PHP
总结PHP代码规范、流程规范、git规范
2018/06/18 PHP
PHP JWT初识及其简单示例
2018/10/10 PHP
js压缩利器
2007/02/20 Javascript
JavaScript导出Excel实例详解
2014/11/25 Javascript
Jquery树插件zTree用法入门教程
2015/02/17 Javascript
jQuery动态添加
2016/04/07 Javascript
jQuery简单实现仿京东分类导航层效果
2016/06/07 Javascript
Nodejs 搭建简单的Web服务器详解及实例
2016/11/30 NodeJs
Vue路由钩子之afterEach beforeEach的区别详解
2018/07/15 Javascript
jQuery 点击获取验证码按钮及倒计时功能
2018/09/20 jQuery
深入理解Vue.js轻量高效的前端组件化方案
2018/12/10 Javascript
微信小程序云开发如何使用npm安装依赖
2019/05/18 Javascript
前端天气插件tpwidget使用方法详解
2019/06/24 Javascript
vue实现直播间点赞飘心效果的示例代码
2019/09/20 Javascript
Node.js控制台彩色输出的方法与原理实例详解
2019/12/01 Javascript
node.js中npm包管理工具用法分析
2020/02/14 Javascript
React.js组件实现拖拽排序组件功能过程解析
2020/04/27 Javascript
Python中字典映射类型的学习教程
2015/08/20 Python
Python找出最小的K个数实例代码
2018/01/04 Python
Python 生成 -1~1 之间的随机数矩阵方法
2018/08/04 Python
解决pandas.DataFrame.fillna 填充Nan失败的问题
2018/11/06 Python
Python 类属性与实例属性,类对象与实例对象用法分析
2019/09/20 Python
基于python修改srt字幕的时间轴
2020/02/03 Python
Python+OpenCV检测灯光亮点的实现方法
2020/11/02 Python
CSS3 分类菜单效果
2019/05/27 HTML / CSS
有模特经验的简历自我评价
2013/09/19 职场文书
关于期中考试的反思
2014/02/02 职场文书
新年抽奖获奖感言
2014/03/02 职场文书
求职自荐信的格式
2014/04/07 职场文书
班主任对学生的评语
2014/04/26 职场文书
2014年保卫科工作总结
2014/12/05 职场文书
python实现简单的名片管理系统
2021/04/26 Python
纯CSS打字动画的实现示例
2022/08/05 HTML / CSS