我从Foursquare API获取一个位置(纬度/经度)附近的场地列表,我获得了一个JSONObject,但我是一个菜鸟,我不知道如何获得一个列表仅响应名称,位置等等。
似乎Foursquare的JSON与上一版本有所不同,这就是我要问的原因。
我正试着这样做。
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) {
}
});
};
谢谢
答案 0 :(得分:0)
看起来你正在做
JSONArray items = venues.optJSONObject(i).getJSONArray("name");
如果将其更改为String,这可能会解决您的一些问题(因为“name”不是数组而是字符串)