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 相关文章推荐
解决中英文字符串长度问题函数
Jan 16 PHP
五个PHP程序员工具
May 26 PHP
PHP 变量类型的强制转换
Oct 23 PHP
php空间不支持socket但支持curl时recaptcha的用法
Nov 07 PHP
php读取csv文件后,uft8 bom导致在页面上显示出现问题的解决方法
Aug 10 PHP
Codeigniter实现处理用户登录验证后的URL跳转
Jun 12 PHP
初识php MVC
Sep 10 PHP
php中return的用法实例分析
Feb 28 PHP
php实现购物车功能(下)
Jan 05 PHP
PHP MVC框架skymvc支持多文件上传
May 26 PHP
php实现头像上传预览功能
Apr 27 PHP
PHP压缩图片功能的介绍
Mar 21 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&amp;java(一)
2006/10/09 PHP
php调用nginx的mod_zip模块打包ZIP文件
2014/06/11 PHP
php+mysql删除指定编号员工信息的方法
2015/01/14 PHP
PHP框架Laravel的小技巧两则
2015/02/10 PHP
jquery 中多条件选择器,相对选择器,层次选择器的区别
2012/07/03 Javascript
js replace替换所有匹配的字符串
2014/02/13 Javascript
JavaScript学习笔记之内置对象
2015/01/22 Javascript
JavaScript使用指针操作实现约瑟夫问题实例
2015/04/07 Javascript
jQuery实现鼠标滑过点击事件音效试听
2015/08/31 Javascript
js基于setTimeout与setInterval实现多线程
2016/06/17 Javascript
Bootstrap modal 多弹窗之叠加关闭阴影遮罩问题的解决方法
2017/02/27 Javascript
layui-table表复选框勾选的所有行数据获取的例子
2019/09/13 Javascript
bootstrap-paginator服务器端分页使用方法详解
2020/02/13 Javascript
vue中使用v-for时为什么不能用index作为key
2020/04/04 Javascript
使用Python进行稳定可靠的文件操作详解
2013/12/31 Python
Python base64编码解码实例
2015/06/21 Python
Python字典实现简单的三级菜单(实例讲解)
2017/07/31 Python
一文带你了解Python中的字符串是什么
2018/11/20 Python
Python脚本完成post接口测试的实例
2018/12/17 Python
python石头剪刀布小游戏(三局两胜制)
2021/01/20 Python
Django实现文件上传和下载功能
2019/10/06 Python
详解Python中pyautogui库的最全使用方法
2020/04/01 Python
opencv 阈值分割的具体使用
2020/07/08 Python
自定义Django_rest_framework_jwt登陆错误返回的解决
2020/10/18 Python
The Kooples美国官方网站:为情侣提供的法国当代时尚品牌
2019/01/03 全球购物
Unineed旗下时尚轻奢网站:FABHunt
2019/05/13 全球购物
教师应聘个人求职信
2013/12/10 职场文书
买房委托公证书
2014/04/08 职场文书
小学英语课后反思
2014/04/26 职场文书
派出所副所长四风问题个人整改措施思想汇报
2014/10/13 职场文书
2014年保卫工作总结
2014/12/05 职场文书
大学生个人总结范文
2015/02/15 职场文书
学校安全管理制度
2015/08/06 职场文书
创业计划书之外语培训班
2019/11/02 职场文书
python基础之错误和异常处理
2021/10/24 Python
Consul在linux环境的集群部署
2022/04/08 Servers