字符串

导航

 

碰到了PHP json_decode returns NULL, 肿么办?

1. google 一下, 关键字:PHP json_decode NULL

首先你能看到我这个这个帖子:)

http://www.cnblogs.com/shgq/admin/EditPosts.aspx?opt=1

2. 使用json_last_error()函数获取到的返回值来帮助我们判断出问题的原因。

其中如果提示错误JSON_ERROR_SYNTAX(Syntax error),表示json串格式错误。

可以通过以下几个方式排错:

a. json字符串必须以双引号包含

$output = str_replace("'", '"', $output);

b json字符串必须是utf8编码
$output = iconv('gbk', 'utf8', $output);

c.不能有多余的逗号 如:[1,2,]
用正则替换掉,preg_replace('/,\s*([\]}])/m', '$1', $output)

3. 我用UTF-8的php写了一个接口,调用时字符串tace出来也正常。

比较了json_decode 前字符串的长度,字符串比想要的多出了6个字符。

分别是239,187,191,239,187,191

有文章说会多3个字符,是DOM的标志。DOM是什么不解释,自己google去。

我的程序多出6个字符,实践才是真道理啊。

4. 解决办法一:调用接口的地方预处理一下:substr($str,6)

5.如果每次都预处理,太烦,有没有更方便的办法了从源上解决问题了?

解决办法2: 我用nodepad++把该文件保存成UTF-8 without DOM,搞定。

再也不用担心null问题了。

 

 

 

 

posted on 2013-12-05 17:58  字符串  阅读(531)  评论(0编辑  收藏  举报