json_decode解析json返回null,显示语法错误

作者:Liaodeity - 2016年11月17日

接收了个json文件发现解析不了,原来是编码问题。

json_decode要求的字符串比较严格:

(1)使用UTF-8编码

(2)不能在最后元素有逗号

(3)不能使用单引号

(4)不能有\r,\t,如果有请替换

(5)含有BOM的文件

转换成utf-8

本人觉得php不以utf-8最为默认编码的人都是耍流氓行为,真让人头大。

$fileType = mb_detect_encoding($contents , array('UTF-8','GBK','LATIN1','BIG5')) ;   
if( $fileType != 'UTF-8'){   
    echo 111;
    $contents = mb_convert_encoding($contents ,'utf-8' , $fileType);   
}

去除BOM

总有些人会给你发一些有BOM的json格式,让你哭笑不得,居然还有人有BOM编辑器编写代码,真揪心,某些编辑器默认会加上BOM头,例如大名鼎鼎的window记事本。

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


本文作者: Liaodeity

本文链接: https://www.jianbaizhan.com/article/517

版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 3.0 许可协议。转载请注明出处!


 请勿发布不友善或者负能量的内容。审查将对发布广告等违规信息进行处罚!