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 相关文章推荐
模拟OICQ的实现思路和核心程序(三)
Oct 09 PHP
PHPThumb PHP 图片缩略图库
Mar 11 PHP
php添加文章时生成静态HTML文章的实现代码
Feb 17 PHP
PHP中的排序函数sort、asort、rsort、krsort、ksort区别分析
Aug 18 PHP
浅析PHP中strlen和mb_strlen的区别
Aug 31 PHP
laravel安装zend opcache加速器教程
Mar 02 PHP
php防止网站被攻击的应急代码
Oct 21 PHP
PHP输入流php://input实例讲解
Dec 22 PHP
mysql desc(DESCRIBE)命令实例讲解
Sep 24 PHP
PDO的安全处理与事物处理方法
Oct 31 PHP
PHP cURL获取微信公众号access_token的实例
Apr 28 PHP
laravel框架路由分组,中间件,命名空间,子域名,路由前缀实例分析
Feb 18 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
杏林同学录(三)
2006/10/09 PHP
PHP实现使用优酷土豆视频地址获取swf播放器分享地址
2014/06/05 PHP
常用的php图片处理类(水印、等比缩放、固定高宽)分享
2015/06/19 PHP
PHP基于phpqrcode生成带LOGO图像的二维码实例
2015/07/10 PHP
php使用gd2绘制基本图形示例(直线、圆、正方形)
2017/02/15 PHP
PHP实现的DES加密解密类定义与用法示例
2020/11/02 PHP
PHP与Web页面的交互示例详解二
2020/08/04 PHP
PHP http请求超时问题解决方案
2020/11/13 PHP
extjs 为某个事件设置拦截器
2010/01/15 Javascript
JavaScript this调用规则说明
2010/03/08 Javascript
用jQuery获取IE9下拉框默认值问题探讨
2013/07/22 Javascript
浅析javascript操作 cookie对象
2014/12/26 Javascript
js实现滑动触屏事件监听的方法
2015/05/05 Javascript
BootStrap 轮播插件(carousel)支持左右手势滑动的方法(三种)
2016/07/07 Javascript
bootstrap 下拉多选框进行多选传值问题代码分析
2017/02/14 Javascript
原生JS+Canvas实现五子棋游戏实例
2017/06/19 Javascript
JS实现弹出下载对话框及常见文件类型的下载
2017/07/13 Javascript
Vue.js实现按钮的动态绑定效果及实现代码
2017/08/21 Javascript
基于VUE移动音乐WEBAPP跨域请求失败的解决方法
2018/01/16 Javascript
详解使用vue-cli脚手架初始化Vue项目下的项目结构
2018/03/08 Javascript
React 使用Hooks简化受控组件的状态绑定
2019/03/18 Javascript
[00:56]2014DOTA2国际邀请赛 DK、iG 赛前探访
2014/07/10 DOTA
[00:11]战神迅矛
2019/03/06 DOTA
Python脚本文件打包成可执行文件的方法
2015/06/02 Python
python实现手机通讯录搜索功能
2018/02/22 Python
python调用xlsxwriter创建xlsx的方法
2018/05/03 Python
JSON文件及Python对JSON文件的读写操作
2018/10/07 Python
python内存监控工具memory_profiler和guppy的用法详解
2019/07/29 Python
Python列表(list)所有元素的同一操作解析
2019/08/01 Python
Python importlib模块重载使用方法详解
2020/10/13 Python
美国最大的在线水培用品商店:GrowersHouse.com
2018/08/14 全球购物
荷叶母亲教学反思
2014/04/30 职场文书
收入证明申请书
2015/06/12 职场文书
有关西游记的读书笔记
2015/06/25 职场文书
2016年读书月活动总结范文
2016/04/06 职场文书
python通过opencv调用摄像头操作实例分析
2021/06/07 Python