【问题标题】:Getting an Array from the Server with an Android PHP Web Service使用 Android PHP Web 服务从服务器获取数组
【发布时间】:2011-09-09 05:43:42
【问题描述】:

我已经用我的安卓应用成功地启动了 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/List(我想是整数类型 - 将每个乘以 1E6)。但现在我只是盯着这个 JSONObject。任何帮助表示赞赏。

【问题讨论】:

  • 如果您可以将来自 PHP 调用的 JSON 响应包含到您的问题中,这样会很有帮助,以便了解 Android 但不了解 PHP 的 SO 中的人也可以在这里为您提供帮助。

标签: php android json http


【解决方案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);

【讨论】:

    猜你喜欢
    • 2020-05-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多