json_decode返回NULL
最近在调用某公司的API时,将对方返回的数据,使用PHP的json_decode函数解析,但是返回NULL,最终排查为对方传送来的json格式有误
打印$_REQUEST,数据结构大致如下:
array (
'TeleRec' => '{
Tel:\'17090114281\',
Type:2,
StartTime:\'2016/9/19 10:19:29\',
EnteTime:\'2016/9/19 10:20:27\',
param1:57,
File:\'20160919101929762-2-17090114281.wav\'}',
'Source' => '',
)
看完对方返回的数据不难发现以下几点错误:
1、TeleRec 是json格式,但是其key,并没有加双引号
2、标准的key和value都应该是双引号,现在其值为单引号
3、每一个键值对后有换行
解决步骤:
1、使用正则表达式,将键加上双引号
2、将值得单引号转化为双引号
3、去掉多余的换行、空格等
代码如下:
function ext_json_decode($str, $mode=false){
$str = preg_replace('/([{,])(\s*)([A-Za-z0-9_\-]+?)\s*:/','$1"$3":',$str);
$str = str_replace('\'','"',$str);
$str = str_replace(" ", "", $str);
$str = str_replace('\t', "", $str);
$str = str_replace('\r', "", $str);
$str = str_replace("\l", "", $str);
$str = preg_replace('/s+/', '',$str);
$str = trim($str,chr(239).chr(187).chr(191));
return json_decode($str, $mode);
}
json_decode返回NULL的更多相关文章
- php使用json_decode返回NULL
php5.2以后自带json_decode函数,但是对json文本串的格式要求非常严格. 很可能使用该函数得到的返回值是NULL 可以使用使用json_last_error()函数获取到的返回值来帮助 ...
- php json_decode返回null
在使用json_decode函数想把json串转化为数组的时候,出现了null,当时还以为是因为json对字符串的长度有限制,还以为是因为两边少了引号,经过多次处理,发现都没有效果. 百度各种帖子,发 ...
- PHP json_decode返回null解析失败原因
在PHP5.4之前 json_decode函数有两个参数json_decode有两个参数,第一个是待解析的字符串,第二个是是否解析为Array json_decode要求的字符串比较严格:(1)使用U ...
- PHP 获取JSON json_decode返回NULL解决办法
在用json_decode对JSON格式的字符串进行解码时竟然为空,页面空白啊,整半天检查这里检查那里,问同事都没用. 今天必应搜索了下,问题解决了,原来是有BOM头输出,大虾的解决办法如下: 1). ...
- json_decode返回null 和synax error原因及处理
$checkLogin ='[{"gdsincode":"1103293","gdsname":"鲜美来带鱼段800g" ...
- PHP解码Json(json_decode)字符串返回NULL的原因及解决方法(转载)
本文主要为大家讲解了php在使用json_decode函数解码json字符串时,解码不成功返回NULL的问题原因分析和解决方法,感兴趣的同学参考下. 一般来说,php对json字符串解码使用json_ ...
- php怎么解析utf-8带BOM编码的json数据,php解析json数据返回NULL
今天遇到一个问题,json_decode解析json数据返回null,试了各种方法都不行,最后发现,原来是json文件编码的问题. 当json_decode解析utf-8带BOM格式的json数据时, ...
- [PHP]对Json字符串解码返回NULL的一般解决方案
---------------------------------------------------------------------------------------------------- ...
- PHP - json_decode returns NULL的解决办法
碰到了PHP json_decode returns NULL, 肿么办? 1. google 一下, 关键字:PHP json_decode NULL 首先你能看到我这个这个帖子:) http:// ...
随机推荐
- FineUI配置文件
<configuration> <configSections> <section name="FineUI" type="FineUI.C ...
- 1014: [JSOI2008]火星人prefix
1014: [JSOI2008]火星人prefix Time Limit: 10 Sec Memory Limit: 162 MB Description 火星人最近研究了一种操作:求一个字串两个后缀 ...
- Day8-面向对象进阶&&socket基础
抽象类 python2中的写法 import abc class Alert(object): '''报警基类''' __metaclass__ = abc.ABCMeta @abc.abstract ...
- 懵懂的js原型
说起原型,就得提起函数,js中据说是这样定义的,每个函数都有一个prototype 属性,(这个属性啊,又是个对象).为了构造函数能复用,就引出了原型,要把共享的东西放到原型上去.例如 //构造函数, ...
- 判断iframe加载完成
一.js判断 var parFrame = document.getElementById("oIframe"); if(parFrame.attachEvent){ parFra ...
- ip地址库 新浪,淘宝
原文连接地址:http://www.9958.pw/post/city_ip function getAddressFromIp($ip){ $urlTaobao = 'http://ip.taoba ...
- metaWeblog Test
#include "stdio.h" int main(int argc ,char **argv) { printf("argc = %d \n",arg ...
- git pull和git fetch的区别
Git中从远程的分支获取最新的版本到本地有这样2个命令:1. git fetch:相当于是从远程获取最新版本到本地,不会自动merge Git fetch origin master git log ...
- Linux C++中的时间函数(转)
http://net.pku.edu.cn/~yhf/linux_c/function/03.html asctime(将时间和日期以字符串格式表示) 相关函数 time,ctime,gmtime ...
- 安装出现了error launching installer
安装geany时,出现问题: 两种解决方法: 解决的办法是: 在控制面板中寻找"区域.语言设置"--管理--更改系统区域设置--中文(简体.中国),确定退出即可! 但是....我不 ...