0

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

        }
    });

};

谢谢

4

1 回答 1

0

看起来你在做

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

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

于 2013-05-16T21:25:40.630 回答