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中Cannot send session cache limiter 的问题的方法
Apr 27 PHP
PHP 表单提交给自己
Jul 24 PHP
适用于php-5.2 的 php.ini 中文版[金步国翻译]
Apr 17 PHP
PHP+Mysql+jQuery实现动态展示信息
Oct 08 PHP
PHP新手用的Insert和Update语句构造类
Mar 31 PHP
PHP使用range协议实现输出文件断点续传代码实例
Jul 04 PHP
PHP curl 抓取AJAX异步内容示例
Sep 09 PHP
PHP+jQuery+Ajax实现用户登录与退出
Apr 27 PHP
php结合安卓客户端实现查询交互实例
May 05 PHP
PHP判断上传文件类型的解决办法
Oct 20 PHP
Centos PHP 扩展Xchche的安装教程
Jul 09 PHP
PHP实现基本留言板功能原理与步骤详解
Mar 26 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
水质对咖图啡风味的影响具体有哪些
2021/03/03 冲泡冲煮
用header 发送cookie的php代码
2007/03/16 PHP
超小PHP小马小结(方便查找后门的朋友)
2012/05/05 PHP
ThinkPHP 3使用OSS的方法
2018/07/19 PHP
用函数模板,写一个简单高效的 JSON 查询器的方法介绍
2013/04/17 Javascript
21个JavaScript事件(Events)属性汇总
2014/12/02 Javascript
学习JavaScript鼠标响应事件
2015/12/25 Javascript
javascript拖拽应用实例
2016/03/25 Javascript
ReactNative页面跳转实例代码
2016/09/27 Javascript
浅谈jquery上下滑动的注意事项
2016/10/13 Javascript
微信小程序 用户数据解密详细介绍
2017/01/09 Javascript
AngulaJS路由 ui-router 传参实例
2017/04/28 Javascript
Vue.js项目部署到服务器的详细步骤
2017/07/17 Javascript
js中getBoundingClientRect的作用及兼容方案详解
2018/02/01 Javascript
详解webpack的proxyTable无效的解决方案
2018/06/15 Javascript
Webpack devServer中的 proxy 实现跨域的解决
2018/06/15 Javascript
Javascript作用域和作用域链原理解析
2020/03/03 Javascript
python爬虫教程之爬取百度贴吧并下载的示例
2014/03/07 Python
Python实现读取邮箱中的邮件功能示例【含文本及附件】
2017/08/05 Python
python如何通过twisted实现数据库异步插入
2018/03/20 Python
Scrapy框架爬取Boss直聘网Python职位信息的源码
2019/02/22 Python
详解Python计算机视觉 图像扭曲(仿射扭曲)
2019/03/27 Python
基于腾讯云服务器部署微信小程序后台服务(Python+Django)
2019/05/08 Python
Python编写带选项的命令行程序方法
2019/08/13 Python
使用Python将字符串转换为格式化的日期时间字符串
2019/09/01 Python
10行Python代码计算汽车数量的实现方法
2019/10/23 Python
在PyTorch中使用标签平滑正则化的问题
2020/04/03 Python
Python高阶函数与装饰器函数的深入讲解
2020/11/10 Python
超30万乐谱下载:Musicnotes.com
2016/09/24 全球购物
SneakerStudio英国:最佳运动鞋商店
2019/05/22 全球购物
企业治理工作自我评价
2013/09/26 职场文书
大学生实习自我鉴定
2013/12/11 职场文书
计算机网络及管理学专业求职信
2014/06/05 职场文书
大学生作弊检讨书
2014/09/11 职场文书
保护动物的宣传语
2015/07/13 职场文书
导游词之湖北梁子湖
2019/11/07 职场文书