[英]How to use PHP json_encode to format array data with []
目标:使用json_encode将数组数据格式化成指定格式
这是运行PHP json_encode后数据所需的格式:
需要的格式
{
"top_level_data": [
{
"extension": {},
"sub_level_data1": 0
}
]
}
当我使用这个 PHP 时:
$data = array('top_level_data' => array('extension' => array(),
'sub_level_data1' => 0
)
)
$data = json_encode($data);
我得到这个不正确的 Output:
{
"top_level_data":{
"extension":[],
"sub_level_data1": 0
}
}
问题:如何修改我的 php 以将 {} 和 [] 作为所需格式包含在正确的位置?
目前尚不清楚您是如何生成$data
的; 如果是通过您显示的分配,那么您可以在top_level_data
添加额外的array
层,并将extension
值转换为 object:
$data = array('top_level_data' => array(
array('extension' => (object)array(),
'sub_level_data1' => 0
)
)
);
但是,如果您从其他来源获取$data
,您可以像这样修改它:
$data['top_level_data']['extension'] = (object)$data['top_level_data']['extension'];
$data['top_level_data'] = array($data['top_level_data']);
两种方法都会产生这个 JSON:
{
"top_level_data": [
{
"extension": {},
"sub_level_data1": 0
}
]
}
json_encode将使用[]
对序列数组进行编码。 序列数组的索引应该从0
到n
。 对于其他数组,关联数组和 object 将使用{}
进行编码。 使用json_encode
的JSON_FORCE_OBJECT
参数,所有数组都将使用{}
进行编码。
例子:
echo json_encode(range(1,3)); // [1,2,3]
echo json_encode(array(2=>2)); // {"2":2}
echo json_encode(range(1,3),JSON_FORCE_OBJECT); // {"0":1,"1":2,"2":3}
echo json_encode((object)range(1,3)); // {"0":1,"1":2,"2":3}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.