阅读:3048回复:0
php的json_decode函数返回null的问题与数组生成json格式方法
php5.2以后自带json_decode函数,但是对json文本串的格式要求非常严格,如果我们稍有一点不注意很可能使用该函数得到的返回值是NULL了,今天我就碰到此问题下面一起来看看。
可以使用使用json_last_error()函数获取到的返回值来帮助我们判断出问题的原因。 其中如果提示错误JSON_ERROR_SYNTAX(Syntax error),表示json串格式错误。 可以通过以下几个方式排错: 1. json字符串必须以双引号包含 $output = str_replace("'", '"', $output); 2. json字符串必须是utf8编码 $output = iconv('gbk', 'utf8', $output); 3.不能有多余的逗号 如:[1,2,] 用正则替换掉,preg_replace('/,s*([]}])/m', '$1', $output); php数组生成json格式方法 直接使用json_encode转换出来的中文会变成NULL的,urlencode后就不存在这个问题了。 json数据为乱码 生成json字符串的时候只能使用utf-8。可以用下面这个函数先实现utf8数组转码然后在直接使用json_encode(): function output($arr = array()) { return eval('return ' . iconv('GB2312', 'UTF-8', var_export($arr, true)) . ';'); } |
|