您的位置:首页 > 编程语言 > PHP开发

php json_decode()返回null的解决方案

2015-06-04 22:12 801 查看
前几天用PHP写API接口时,客户端访问服务器得到了JSON数据,但是客户端解析不了.

客户端使用json_decode()解析API返回的数据的时候一直都返回null,于是尝试以下手段.

(1)检查一下编码,json_encode只支持UTF8编码的字符,否则,中文乱码或者空值就出现了,下面附上转化方法.
//将数组转换为JSON字符串(兼容中文)
function JSON($array) {
$this->arrayRecursive($array, 'urlencode', true);
$json = json_encode($array);
return urldecode($json);
}

function arrayRecursive(&$array, $function, $apply_to_keys_also = false)
{
static $recursive_counter = 0;
if (++$recursive_counter > 1000) {
die('possible deep recursion attack');
}
foreach ($array as $key => $value) {
if (is_array($value)) {
arrayRecursive($array[$key], $function, $apply_to_keys_also);
} else {
$array[$key] = $function($value);
}

if ($apply_to_keys_also && is_string($key)) {
$new_key = $function($key);
if ($new_key != $key) {
$array[$new_key] = $array[$key];
unset($array[$key]);
}
}
}
$recursive_counter--;
}
  

(2)打开chrome的控制台,将侦听到的XHR中得json格式进行校验,校验地址:,发现返回valid,是有效地啊亲!!!

(3)尝试以下解决方案.

A:用编辑器打开php脚本文件,把文件的BOM头去掉.

B:声明编码为UTF-8 header("Content-type:text/html;charset=UTF-8");

C:对传过来的json进行转义:

$qids = json_decode(str_replace ('\"','"', $_POST['qids']), true);

进过此番处理之后,使用json_decode可以正常返回数据了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  php