这种情况一般是json_encode序列化数组时出现错误,错误原因有很多,可以通过 json_last_error 函数来查看错误原因!
echo json_encode(array('error' => '0', 'msg' => '登录成功'));
var_dump(json_last_error());
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 |
错误码对照:
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
接口文件为gbk编码,json_encode转换数组结果为空,用 json_last_error 查看错误,提示编码问题,查找资料发现json_encode只能转化 utf-8 的数组,解决代码为大家附上:
//转化数组为utf-8,再进行json处理
$arr = eval('return ' . iconv('gbk','utf-8',var_export($arr,true).';'));
$json = json_encode($arr,JSON_UNESCAPED_UNICODE);
echo iconv('utf-8','gbk',$json);
本文详细介绍了使用json_encode函数时可能出现的各类错误及其原因,并提供了解决方案,特别是针对非UTF-8编码数组的问题。
367

被折叠的 条评论
为什么被折叠?



