【问题标题】:Get a list of venues from a JSON response从 JSON 响应中获取场所列表
【发布时间】:2013-05-17 05:25:40
【问题描述】:

我从 Foursquare API 获取位置(纬度/经度)附近的场地列表,我获取 JSONObject,但我是菜鸟,我不知道如何获取列表仅提供名称、位置等信息。

Foursquare 的 JSON 似乎与上一个版本有所不同,这就是我问它的原因。

例如 Foursquare API Explorer

我正在尝试这样做。

public void showVenues() {
    // Objeto Conexion HTTP - Libreria AsyncHttpClient
    AsyncHttpClient client = new AsyncHttpClient();
    // Genero la conexion, mediante URL, Parameters, Listener(Json)
    Log.i("FOURSQUAREQUERY", getFOURSQUAREQUERY());
    client.get(getFOURSQUAREQUERY(), null, new JsonHttpResponseHandler() {
        // Evento onSuccess disparado cuando se descarga
        // correctamente la informacion
        @Override
        public void onSuccess(JSONObject data) {
            try {
                // js = new JSONObject(s);
                Log.i("JSON", data.toString());
                JSONArray venues = data.getJSONObject("response")
                        .getJSONArray("venues");
                List<JSONObject> venue_names = new ArrayList<JSONObject>();
                for (int i = 0; i < venues.length(); i++) {
                    JSONArray items = venues.optJSONObject(i).getJSONArray(
                            "name");
                    for (int j = 0; j < items.length(); j++) {
                        JSONObject tempObj = new JSONObject();
                        tempObj.put("name", items.optJSONObject(j)
                                .getJSONObject("venue").optString("name"));
                        tempObj.put(
                                "address",
                                items.optJSONObject(j)
                                        .getJSONObject("venue")
                                        .getJSONObject("location")
                                        .optString("address"));
                        tempObj.put(
                                "distance",
                                items.optJSONObject(j)
                                        .getJSONObject("venue")
                                        .getJSONObject("location")
                                        .optInt("distance"));
                        venue_names.add(tempObj);
                        Log.i("TEMPOBJECT", tempObj.toString());
                    }
                }
            } catch (JSONException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

        }

        @Override
        public void onFailure(Throwable arg0) {

        }
    });

};

谢谢

【问题讨论】:

    标签: android json foursquare


    【解决方案1】:

    看起来你在做

    JSONArray items = venues.optJSONObject(i).getJSONArray("name");
    

    如果你把它改成一个字符串,这可能会解决你的一些问题(因为“名称”不是一个数组而是一个字符串)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-07-22
      • 2022-06-28
      • 1970-01-01
      • 2021-09-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多