php json_encode输出为空问题查询

本文详细介绍了使用json_encode函数时可能出现的各类错误及其原因,并提供了解决方案,特别是针对非UTF-8编码数组的问题。

这种情况一般是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_RECURSIONOne or more recursive references in the value to be encodedPHP 5.5.0
JSON_ERROR_INF_OR_NANOne or more NAN or INF values in the value to be encodedPHP 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);

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值