这种情况一般是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