遇到问题:
当我们在项目开发中使用json_encode($res)转换数组为json字符串,但返回的结果却是空白的,这个时候应该怎么办呢?
解决方法:
1、查找错误原因,可以使用PHP自带的两个方法来检查错误
json_last_error()
这个函数会返回当前json_encode的错误原因,返回的是数字,需要对应看下具体是哪个错误。
错误码 | 代号 | 描述 | |
0 | JSON_ERROR_NONE |
没有错误发生 | |
1 | JSON_ERROR_DEPTH |
到达了最大堆栈深度 | |
2 | JSON_ERROR_STATE_MISMATCH |
无效或异常的 JSON | |
3 | JSON_ERROR_CTRL_CHAR |
控制字符错误,可能是编码不对 | |
4 | JSON_ERROR_SYNTAX |
语法错误 | |
5 | JSON_ERROR_UTF8 |
异常的 UTF-8 字符,也许是因为不正确的编码。 | PHP 5.3.3 |
6 | JSON_ERROR_RECURSION |
One or more recursive references in the value to be encoded | PHP 5.5.0 |
7 | JSON_ERROR_INF_OR_NAN |
One or more NAN or INF values in the value to be encoded |
PHP 5.5.0 |
8 | JSON_ERROR_UNSUPPORTED_TYPE |
指定的类型,值无法编码。 | PHP 5.5.0 |
9 | JSON_ERROR_INVALID_PROPERTY_NAME |
指定的属性名无法编码。 | PHP 7.0.0 |
10 | JSON_ERROR_UTF16 |
畸形的 UTF-16 字符,可能因为字符编码不正确。 | PHP 7.0.0 |
json_last_error_msg()
这个函数会返回错误原因解释,例如:Malformed UTF-8 characters, possibly incorrectly encoded
Malformed UTF-8 characters, possibly incorrectly encoded 这个错误一般就是utf-8编码中有些特殊中文转码乱码导致的,重新转一次utf-8编码即可,方法如下:
//转换字符编码
$result = mb_convert_encoding($result, 'utf-8', 'UTF-8,GBK,GB2312,BIG5');