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);
{不符合预期要求,为了解决问题将最后一行代码加入强制转换为object参数
"code": 100,
"result": {
"title": "test_json",
"content": [
[
"taobao",
"baidu"
],
[
"jeeinn"
]
]
}
}
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
下测试通过!