json_decode 返回NULL问题

2018年8月11日 4625点热度 1人点赞 0条评论

之前发布过PHP进行POST(GET)并获取返回值  一篇文章,如果不方便把一些参数直接写在html的form里,利用php来处理一些post请求并处理数据也是一个非常不错的方法。

服务端一个json_encode并打印,然后调用这个api的时候用php在服务器端用服务器发起post请求并接受解析json字符串,可是经过我json_decode之后得到的却是NULL,于是我打印了一下接收到的结果,结果应该是正确的,利用json_last_error发现返回代码是4,就是语法错误的意思,然后随便找了几个json校验的网站试了一下,结果都是正确的,语法并没有错误,而且经过json_encode后得到结果应该也不会是错误的。

然后就是字符编码问题,json_decode只能处理utf-8编码的字符串,非utf-8编码就会返回NULL,这一点完全可以排除掉,我所有的地方就是utf-8没错。

然后经过一番搜索之后,发现通过php post 方式获取的字符串好像有bom头信息,这个是看不见摸不着的,可以输出一下获得结果的字符长度,和同样的一段json字符串的长度是否一样,结果发现二者相差三个字符,应该就是所谓的bom头信息了,截取一下:

$res= substr($res, 3);

再进行json_decode,已经可以正常输出信息了。

另:有些情况会有可能是因为html转义的原因,可以这样一下:$res=htmlspecialchars_decode($res);

jlqwer

这个人很懒,什么都没留下

文章评论