PHP解决json_encode转换数组为json字符串时返回空白问题

遇到问题:

当我们在项目开发中使用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');

猜你喜欢

转载自blog.csdn.net/qq15577969/article/details/113941333