得到正确的json响应

时间:2014-03-25 11:52:40

标签: php json

我从数据库获取数据并以json

的形式显示

我是这样做的:

    while ($row = @mysqli_fetch_row($result))
    {   
        array_push($result1,$row);
    }
    echo  $result1 = json_encode($result1,true); 

以这种形式给出结果

[["29"],["13702210"],["892344"],["Multi AxleB9RVolvo"],["10:30AM"],["06:45PM"],["14"],["37"],["650"]] 

这仅打印从表中获取的数据库值。但是这个响应被标记为无效的json响应

每个字段的名称都在表格中。 我希望以这种形式看到json响应:;

{"routes":[{"route":{"routeid":29,"Service_Name":13702210,"Service_Number":892344,"BusType":"Multi AxleB9RVolvo","DepartureTime":"10:30AM","ArravalTime":"06:45PM","available_seats":14,"Total_SeatCapacity":37,"Fare":"650"}},{"route":{"routeid":29,"Service_Name":13702210,"Service_Number":892344,"BusType":"Multi AxleB9RVolvo","DepartureTime":"10:30AM","ArravalTime":"06:45PM","available_seats":14,"Total_SeatCapacity":37,"Fare":"650"}},{"route":{"routeid":29,"Service_Name":13702210,"Service_Number":892344,"BusType":"Multi AxleB9RVolvo","DepartureTime":"10:30AM","ArravalTime":"06:45PM","available_seats":14,"Total_SeatCapacity":37,"Fare":"650"}}]}

这包含名称和嵌套预览。我怎么能这样做?

2 个答案:

答案 0 :(得分:1)

我不知道你的数据库的结构,但是:

while ($row = @mysqli_fetch_assoc($result))
{   
    array_push($result1,$row);
}
echo  $result1 = json_encode(array('routes' => $result1)); 

可以给你想要的结果。 mysql_fetch_assoc()将表行作为将提供键的关联数组返回。

然后array('routes' => $result1)创建一个新的关联数组,其键“routes”与数组索引匹配。

如果他们的sql响应中的键不正确,您可以尝试在SQL查询中使用select field_name as alias_name来返回相应的字段名称。

这里真正的技巧是为每个值设置具有适当键的关联数组,以便json_encode创建对象而不是列表。

答案 1 :(得分:0)

你需要使用关联数组,使用它;

while ($row = @mysqli_fetch_assoc($result))
{   
    array_push($result1,$row);
}
echo  $result1 = json_encode($result1,true); 
// for `routes` parent
// echo  $result1 = json_encode(array("routes" => $result1));