php json_decode()返回null的解决方案
2015-06-04 22:12
801 查看
前几天用PHP写API接口时,客户端访问服务器得到了JSON数据,但是客户端解析不了.
客户端使用json_decode()解析API返回的数据的时候一直都返回null,于是尝试以下手段.
(1)检查一下编码,json_encode只支持UTF8编码的字符,否则,中文乱码或者空值就出现了,下面附上转化方法.
(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可以正常返回数据了。
客户端使用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可以正常返回数据了。
相关文章推荐
- 一个关于if else容易迷惑的问题
- PHP5.2.*防止Hash冲突拒绝服务攻击的Patch
- 深入理解PHP之匿名函数
- JSP/PHP基于Ajax的分页功能实现
- 关于PHP通过PDO用中文条件查询MySQL的问题。
- 什么是设计模式
- PHP数据库长连接mysql_pconnect的细节
- Php Installing An Expansion
- PHP+Apache在Windows 9x下的安装和配置
- IIS 6 的 PHP 最佳配置方法
- 安装Apache和PHP的一些补充
- Linux Apache+MySQL+PHP
- 建立Apache+PHP+MySQL数据库驱动的动态网站
- PHP 5.3.0 安装分析心得
- apache 环境下 php 的配置注意事项
- ASP.NET、ASP、PHP、JSP之间有什么区别?
- PHP VBS JS 函数 对照表
- C语言实现的统计php代码行数功能源码(支持文件夹、多目录)
- php xml 入门学习资料