解决php中json_encode()部分原样输出

json_encode()实现部分原样输出(Non-associative array output as object中文叫:非关联数组输出为对象)

问题

在API对接中通常要求输出格式为json,但是某部分要求array的key值为数字如:
{
"code": "100",
"result": {
"title": "test_json",
"content": {
"0": [
"taobao",
"baidu"
],
"1": [
"jeeinn"
]
}
}
}

解决过程

原程序代码为:
$content = array('0'=>['taobao','baidu'],'1'=>['jeeinn']);
$array = array(
'title'=>'test_json',
'content'=>$content
);
function out_put_ok($array){
header('content-type:application:json;charset=utf8');
header('Access-Control-Allow-Origin:*');
header('Access-Control-Allow-Methods:GET,POST');
header('Access-Control-Allow-Headers:x-requested-with,content-type');
$array = array('code'=>100,'result'=>$array);
exit(json_encode($array));
}
out_put_ok($array);
执行后输出为:
{
"code": 100,
"result": {
"title": "test_json",
"content": [
[
"taobao",
"baidu"
],
[
"jeeinn"
]
]
}
}
不符合预期要求,为了解决问题将最后一行代码加入强制转换为object参数
exit(json_encode($array,JSON_FORCE_OBJECT))
结果还是不符合输出json格式,输出如下:
{
"code": 100,
"result": {
"title": "test_json",
"content": {
"0": {
"0": "taobao",
"1": "baidu"
},
"1": {
"0": "jeeinn"
}
}
}
}
最后只能从数据组成的结构中想办法,将content参数进行转换,这里转换为object
$content = (object) array('0'=>['taobao','baidu'],'1'=>['jeeinn']);
至此,完成了最初的json格式要求! 在php 7.0 下测试通过!

小结

参见PHP数组说明:Array
Author: thinkwei

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注