使用Android PHP Web服务从服务器获取数组

时间:2011-09-09 05:43:42

标签: php android json http

我已经使用我的Android应用程序成功启动了HttpGet。它连接到服务器上的数据库,我可以使用PHP获取查询结果。现在我只想获得结果,在本例中是一个数组,其中每行包含两个值。 (实际上是X,Y坐标 - 我从服务器上取下GPS坐标。)

我的PHP代码是:

    ...(assume already connected to Database)

  $query  = "SELECT xcoords, ycoords FROM geo_table WHERE xcoords <> '0' AND ycoords <> '0' ";
 $result = mysql_query($query);

$rows = array();


while ($r = mysql_fetch_array($result, MYSQL_NUM))
{
//printf("X: %s  Y: %s", $r[0], $r[1]); 
$rows[]=$r;
} 

echo json_encode($rows);
 ?> 

代码有效。我得到了我的阵列。在Android中,我这样做是为了HttpGet响应:

        JSONObject j = new JSONObject();
        j.put("array", response);

也许我应该把它变成JSONArray? 我现在不确定如何使用这个JSONObject。真的很令人沮丧。我的最终目标是制作一个ArrayList /列表的coords(Integer类型,我想 - 每个乘以1E6)。但是现在我只是盯着这个JSONObject。任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:1)

您可以使用GSON(http://code.google.com/p/google-gson/)并反序列化对某个类的响应。

创建一个这样的类:

public class Geo
{
  public String longitude;
  public String latitude;

}

//使用Gson反序列化

Type collectionType = new TypeToken<Collection<Geo>>(){}.getType();
Collection<Geo> geo = gson.fromJson(response, collectionType);