从JSON响应中获取场地列表

时间:2013-05-16 11:09:24

标签: android json foursquare

我从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) {

        }
    });

};

谢谢

1 个答案:

答案 0 :(得分:0)

看起来你正在做

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

如果将其更改为String,这可能会解决您的一些问题(因为“name”不是数组而是字符串)