php json_encode输出为空问题

这种情况一般是json_encode序列化数组时出现错误,错误原因有很多,可以通过json_last_error函数来查看错误原因!!!

可能的原因

-----------------------------------------------------------

1、反斜杠,可以用stripslashes() 函数删除由 addslashes() 函数添加的反斜杠,可能还要用到urlencode ()— 编码 URL 字符串

-----------------------------------------------------------

json_last_error函数手册地址(http://www.php.net/manual/zh/function.json-last-error.php)

-----------------------------------------------------------

(PHP 5 >= 5.3.0, PHP 7)

json_last_error — 返回最后发生的错误

说明

-----------------------------------------------------------

int json_last_error ( void ) 如果有,返回 JSON 编码解码时最后发生的错误。

参数

-----------------------------------------------------------

此函数没有参数。

返回值

-----------------------------------------------------------

返回一个整型(integer),这个值会是以下的常量之一:

JSON_ERROR_NONE 没有错误发生  
JSON_ERROR_DEPTH 到达了最大堆栈深度  
JSON_ERROR_STATE_MISMATCH 无效或异常的 JSON  
JSON_ERROR_CTRL_CHAR 控制字符错误,可能是编码不对  
JSON_ERROR_SYNTAX 语法错误  
JSON_ERROR_UTF8 异常的 UTF-8 字符,也许是因为不正确的编码。 PHP 5.3.3
JSON_ERROR_RECURSION One or more recursive references in the value to be encoded PHP 5.5.0
JSON_ERROR_INF_OR_NAN One or more NAN or INF values in the value to be encoded PHP 5.5.0
JSON_ERROR_UNSUPPORTED_TYPE 指定的类型,值无法编码。 PHP 5.5.0
JSON_ERROR_INVALID_PROPERTY_NAME 指定的属性名无法编码。 PHP 7.0.0
JSON_ERROR_UTF16 畸形的 UTF-16 字符,可能因为字符编码不正确。 PHP 7.0.0

echo json_encode(array(‘error‘ => ‘0‘, ‘message‘ => ‘没有错误‘));

var_dump(json_last_error());

//这里也可以是json_decode

//错误码对照

0 JSON_ERROR_NONE

1 JSON_ERROR_DEPTH

2 JSON_ERROR_STATE_MISMATCH

3 JSON_ERROR_CTRL_CHAR

4 JSON_ERROR_SYNTAX

5 JSON_ERROR_UTF8

6 JSON_ERROR_RECURSION

7 JSON_ERROR_INF_OR_NAN

8 JSON_ERROR_UNSUPPORTED_TYPE

时间: 2024-10-05 23:57:19

php json_encode输出为空问题的相关文章

htmlspecialchars输出为空的问题

这个问题是在近期发生的,感觉自从 PHP 5.3升级到了 5.6以后好多地方出错. 试验了很多办法,只要用了htmlspecialchars就会输出为空.百度了下,找到了问题的所在. 因为php5.4之后对htmlspecialchars的默认编码做出了改变,为utf-8,库中的数据以及文件都是gbk的 解决办法呢,修改所有用到htmlspecialcahrs('','','ISO-8859-1')的地方,设定编码吧,或者在头部增加ini_set('default_charset','gbk')

php5.4后htmlspecialchars输出为空的问题

从旧版升级到php5.4,恐怕最麻烦的就是htmlspecialchars这个问题了!当然,htmlentities也会受影响,不过,对于中文站来说一般用htmlspecialchars比较常见,htmlentities非常少用到. 可能老外认为网页普遍应该是utf-8编码的,于是苦了那些用GB2312,GBK编码的中文站......! 具体表现: $str = "9enjoy.com的php版本是5.2.10";echo htmlspecialchars($str); gbk字符集下

jquery的ajax处理php返回数组,及json_encode中文为空的问题

最近又开始学PHP了, 这里碰到一个问题, php 在处理jquery 的 ajax 传回来的 json数据中, 中文部分为空. 数据库为 mysql, 又是php中文编码的问题. 参考截图: (左图为解决之前, 右图为解决之后) 偶的解决代码: 1, 后端 php   ( ajaxRequest/GetNotifyList.php ) $list=array('ID'=>$list[ID], 'Title'=>iconv( 'gb2312', 'UTF-8' , $list[Title]))

php json_encode() 输出乱码问题

{"title":"\u8fd9\u91cc\u662f\u4e2d\u6587\u6807\u9898","body":"abcd..."} 数组中所有中文在json_encode之后都不见了或者出现\u2353等. 解决方法是用urlencode()函数处理以下,在json_encode之前,把所有数组内所有内容都用urlencode()处理一下,然用json_encode()转换成json字符串,最后再用urldecod

PHP json_encode 转换成空对象和空数组

对于以下对象 $foo = array( "bar1" => array(), "bar2" => array() ); 我想转换成 { "bar1": {}, "bar2": [] } 默认情况下用json_encode($foo)得到的是 { "bar1": [], "bar2": [] } 而加了JSON_FORCE_OBJECT参数的json_encode($foo,

php解决json_encode输出GB2312中文问题 (数组)

在 php 中使用 json_encode() 内置函数(php > 5.2)可以使用得 php 中数据可以与其它语言很好的传递并且使用它. 这个函数的功能是将数值转换成json数据存储格式. 如下所示: $arr = array('Name'=>'希亚', 'Age'=>20); $jsonencode = json_encode($arr); echo $jsonencode; 运行结果: {"Name":null,"Age":20} json

dedecms 列表每隔6行输出一个空li

{dede:list pagesize='33'} <li class="hang"><a href="[field:arcurl/]" target="_blank">[field:title /]</a><span class="sj">[field:pubdate function="MyDate('Y-m-d',@me)"/]</span>

1043. 输出PATest(20)

时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 给定一个长度不超过10000的.仅由英文字母构成的字符串.请将字符重新调整顺序,按"PATestPATest...."这样的顺序输出,并忽略其它字符.当然,六种字符的个数不一定是一样多的,若某种字符已经输出完,则余下的字符仍按PATest的顺序打印,直到所有字符都被输出. 输入格式: 输入在一行中给出一个长度不超过10000的.仅由英文字母构成的非空字符

L1-023. 输出GPLT

L1-023. 输出GPLT 时间限制 150 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 给定一个长度不超过10000的.仅由英文字母构成的字符串.请将字符重新调整顺序,按“GPLTGPLT....”这样的顺序输出,并忽略其它字符.当然,四种字符(不区分大小写)的个数不一定是一样多的,若某种字符已经输出完,则余下的字符仍按GPLT的顺序打印,直到所有字符都被输出. 输入格式: 输入在一行中给出一个长度不超过10000的.仅由英文字母构成