我像这样从DB中获取数据
$endResult = array();
while($row = $stmt->fetch(PDO::FETCH_ASSOC)){
if (!isset($endResult[$row['car']])) {
$endResult[$row['car']]= (object) array(
'car' => $row['car'],
'carModel' => $row['carModel'],
'colors' => array()
);
}
$endResult[$row['car']] -> colors [] = (object) array(
'paintedOn' => $row['paintenOnDate'],
'paintedBy' => $row['paintedBy']
);
}
//return with slim.php
$response->body(json_encode($endResult));结果我得到了
{"1":
{
"car": "1",
"carModel": "model-1",
"colors": [
{
"paintedOn": "2014-11-07",
"paintedBy": "5"
},{
"paintedOn": "2014-11-08",
"paintedBy": "6"
}]
},
"2":{
"car": "2",
"carModel": "model-2",
"colors": [
{
"paintedOn": "2014-11-09",
"paintedBy": "7"
},{
"paintedOn": "2014-11-10",
"paintedBy": "8"
}]
}
}//<--replace this with []即使$endResult被声明为数组,我也得到了{}括号,如何将"Object“括号替换为" Array”括号?
更新:我不能删除json_encode作为前端(主干)期待的集合
更新2:$endResult = array();返回[...],但此$endResult[$row['car']]= (object) array(...)将其转换为{...}
发布于 2014-11-11 13:40:27
您无法实现您想要的结果,因为它将导致无效的JSON。根据json.org
数组是一个有序的值集合。数组以(左括号)并以开头。值由,(逗号)分隔。
因此,您只能在数组中有值。因为要向值添加名称,所以它必须成为一个对象。
如果确实希望将JSON封装在数组中,则需要删除示例"1“和”2“中的第一级名称:
[
{
"car": "1",
"carModel": "model-1",
"colors": [
{
"paintedOn": "2014-11-07",
"paintedBy": "5"
},
{
"paintedOn": "2014-11-08",
"paintedBy": "6"
}
]
},
{
"car": "2",
"carModel": "model-2",
"colors": [
{
"paintedOn": "2014-11-09",
"paintedBy": "7"
},
{
"paintedOn": "2014-11-10",
"paintedBy": "8"
}
]
}
]发布于 2014-11-11 12:49:41
删除对JSON的转换。此外,PHP中的“声明”并不重要。您仍然可以在程序的过程中分配不同的类型。
发布于 2014-11-11 12:50:51
我认为PHP函数解码在这里应该对您有所帮助。这会将JSON格式转换为数组。
https://stackoverflow.com/questions/26865267
复制相似问题