PHP json_decode返回null解析失败原因

在PHP5.4之前
json_decode函数有两个参数json_decode有两个参数,第一个是待解析的字符串,第二个是是否解析为Array

json_decode要求的字符串比较严格:
(1)使用UTF-8编码
(2)不能在最后元素有逗号
(3)不能使用单引号
(4)不能有r,t,如果有请替换

所以问题来了,不小心在返回的json字符串中返回了BOM头的不可见字符,某些编辑器默认会加上BOM头,如下处理才能正确解析json数据:

$result = json_decode(trim($contents,chr(239).chr(187).chr(191)),true);
print_r($result);

参考:http://www.jishutie.net/p/19227.html 

PHP json_decode返回null解析失败原因,布布扣,bubuko.com

时间: 2024-10-19 16:45:48

PHP json_decode返回null解析失败原因的相关文章

json_decode返回null 和synax error原因及处理

$checkLogin ='[{"gdsincode":"1103293","gdsname":"鲜美来带鱼段800g","nowamount":0.000,"shopprice":18.00,"stockinstd":1.00,"baseunit":"袋","brandcode":"00"

php使用json_decode返回NULL

php5.2以后自带json_decode函数,但是对json文本串的格式要求非常严格. 很可能使用该函数得到的返回值是NULL 可以使用使用json_last_error()函数获取到的返回值来帮助我们判断出问题的原因. 其中如果提示错误JSON_ERROR_SYNTAX(Syntax error),表示json串格式错误. 可以通过以下几个方式排错: 1. json字符串必须以双引号包含 $output = str_replace("'", '"', $output);

PHP 获取JSON json_decode返回NULL解决办法

在用json_decode对JSON格式的字符串进行解码时竟然为空,页面空白啊,整半天检查这里检查那里,问同事都没用. 今天必应搜索了下,问题解决了,原来是有BOM头输出,大虾的解决办法如下: 1).json_decode($json,boolean):$json为json格式的字符,第二个参数为TRUE时表示转换为数组,默认的FALSE表示 转换为对象. 2).json_decode要求的字符串比较严格: (1)使用UTF-8编码 (2)不能在最后元素有逗号 (3)不能使用单引号 (4)不能有

tp中对json_decode返回null的解决办法

json_decode要求的字符串比较严格:(1)使用UTF-8编码(2)不能在最后元素有逗号(3)不能使用单引号(4)不能有\r,\t,如果有请替换 tp框架中的I函数默认对post的参数进行了htmlspecialchars过滤 'DEFAULT_FILTER' => 'htmlspecialchars', // 默认参数过滤方法 用于I函数... string(23) "{"test":"url",'attr':1}" string(

json_decode 返回null 问题

当查询了各种方法,并且尝试了各种方法, 1. json字符串必须以双引号包含 $output = str_replace("'", '"', $output); 2. json字符串必须是utf8编码 $output = iconv('gbk', 'utf8', $output); 3.不能有多余的逗号 如:[1,2,] 用正则替换掉,preg_replace('/,\s*([\]}])/m', '$1', $output) 等等, 请不要放弃治疗,再尝试一个办法 $arr

PHP解码Json(json_decode)字符串返回NULL的原因及解决方法(转载)

本文主要为大家讲解了php在使用json_decode函数解码json字符串时,解码不成功返回NULL的问题原因分析和解决方法,感兴趣的同学参考下. 一般来说,php对json字符串解码使用json_decode()函数,第一个参数传字符串,第二个参数若为true,返回array:若为false,返回object.如果返回NULL,说明报错,输出json_last_error(),得到的整数值对应错误提示.如下图所示: json_last_error()比较常见的是整数4, 是json字符串在j

[PHP]对Json字符串解码返回NULL的一般解决方案

/*-------------------------------------------------------------------------------------------------------- @黑眼诗人 <www.chenwei.ws> --------------------------------------------------------------------------------------------------------*/ php对json字符串解

fopen() 返回 NULL, 奇葩原因:当前进程打开多个句柄,忘记关闭。(bug)

今天在测试一个程序的时候,突然第一次弹出错误对话框,提示: 创建新文件失败. fopen() 返回 NULL 我又重启程序测试,还是提示同样的错误. 经过几分钟的检查,发现一个规律:当处理到500多个文件时,开始挂掉. 终于发现原因,因为有一段代码在处理文件遇到错误时,忘记fclose()了. 当处理500多个文件出错时,也就意味着当前进程fopen()500多个文件,刚好windows对进程打开文件的句柄数有限制(百度一下). 所以导致:fopen()返回 NULL. 2014-07-17

Android开发:getViewById返回null的原因定位

最近在研究开发一些基于Android的App,遇到了一些问题,其中一个比较关键的是在Activity中的onCreate()方法中获取Button对象,代码大概如下: private Button mTrueButton; @Override public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.activity_quiz); mTr