mixare json,如何配置?

时间:2013-06-30 08:11:33

标签: php json

$query = "SELECT id, latitude, longitude, elevation, title, distance, has_detail_webpage, webpage, info FROM korban";
$q=mysql_query($query);
//echo $query;
while($e=mysql_fetch_assoc($q))
          $output[]=$e;
   print(json_encode($output));

从这段代码中,它将生成如下,

[
{"id":"1","latitude":"-77.036519","longitude":"77.036519","elevation":"0","title":"coba","distance":null,"has_detail_webpage":"0","webpage":"0","info":"0"},
{"id":"3","latitude":"12","longitude":"42","elevation":"21","title":"213","distance":"12","has_detail_webpage":"1","webpage":"12","info":"12"},
{"id":"32","latitude":"","longitude":"","elevation":null,"title":null,"distance":null,"has_detail_webpage":"1","webpage":null,"info":null}
]

但我想要这样的事情,

{ "status": "OK", "num_results": 3, "results": 
[ { "id": "2833", "lat": "41.359288",   "lng": "-73.646850", "elevation": "53", "title": "Target4", "distance": "1.756", "has_detail_page": "1", "webpage": "" }, 
  { "id": "2821", "lat": "41.359768", "lng": "-73.646870", "elevation": "0", "title": "Target2", "distance": "1.771", "has_detail_page": "0", "webpage": "" }, 
  { "id": "2829", "lat": "41.359820", "lng": "-73.646870", "elevation": "0", "title": "Target3", "distance": "1.545", "has_detail_page": "1", "webpage": "" } 
] }

我该怎么做?

3 个答案:

答案 0 :(得分:1)

获取所有结果或逐行执行。选择自己。然后创建json数组。您还可以查看对{​​{3}} *函数的使用。因为他们现在已被弃用。你应该切换到mysql_ / MySQli

$result = array();
while($row = mysql_fetch_assoc($q)) {     
 $result[] = $row;
}

$output = array('status' => 'OK' , 'num_results' => count($result), 'results' => $result);
echo json_encode($output);

答案 1 :(得分:0)

要在json中添加您希望拥有的结构,首先必须在将其编码为json之前从php创建该结构。

$objects = array();
while ($r = mysql_fetch_associ($rs) {
      $a = new stdClass();
      $a->status = $r['status'];
      ...
      $a->results = array('id' => $r['id']....)
      $objects[] = $a;
}

echo json_encode($objects);

答案 2 :(得分:0)

$query = "SELECT id, latitude, longitude, elevation, title, distance, has_detail_webpage, webpage, info FROM korban";

$q=mysql_query($query);
$output = array();
if($q) {
    $output['status'] = 'OK'; 
}
$output['num_results'] = mysql_num_rows($q); 
while($e=mysql_fetch_assoc($q)) {

$output['results'][]= array (
    'id' => $e['id'],
    'lat' => $e['latitude'],
    'lng' => $e['longitude'],
    'elevation' => $e['elevation'],
    'title' => $e['title'],
    'distance' => $e['distance'],
    'has_detail_page' => $e['has_detail_webpage'],
    'webpage' => $e['webpage'],
);
}
print(json_encode($output));