【发布时间】:2016-04-07 19:10:13
【问题描述】:
我正在尝试使用 AsyncTask 返回它通过从 Web API 读取 JSON 响应而生成的对象列表,但代码似乎无法正常运行。我只是想知道是否有人可以帮助我并指出我做错了什么。
我的 AsyncTask 类 doInBackground() 方法:
@Override
protected List<DublinBusObject> doInBackground(String... params) {
String liveUpdateUrl = params[0];
List<DublinBusObject> dublinBusObjects = new ArrayList<>();
try {
JSONObject jsonObject = new JSONObject(liveUpdateUrl);
for (int x = 0; x < jsonObject.getJSONArray("stops").length(); x++) {
this.busRoute = jsonObject.getString("bus_num");
this.busDescription = jsonObject.getString("description");
this.bueTime = jsonObject.getString("exected_dep");
this.busStopId = jsonObject.getString("stop_id");
DublinBusObject dublinBusObject = new DublinBusObject(busRoute, busDescription, bueTime, busStopId);
dublinBusObjects.add(dublinBusObject);
}
if (android.os.Debug.isDebuggerConnected()) android.os.Debug.waitForDebugger();
Log.e("TAG", jsonObject.keys().next().toString());
Log.e("TAG", jsonObject.toString());
} catch (JSONException e) {
e.printStackTrace();
}
return dublinBusObjects;
}
它试图读取的 JSON 响应:
{
"stops":[
{
"aimed_dep":1437,
"aimed_time":1437,
"bus_num":"122",
"congestion":"false",
"description":"Ashington via City Centre",
"direction":"Inbound",
"exected_dep":1,
"expected_time":1,
"last_updated":1439,
"stop_id":"00066",
"timestamp":1439
},
{
"aimed_dep":27,
"aimed_time":27,
"bus_num":"122",
"congestion":"false",
"description":"Ashington via City Centre",
"direction":"Inbound",
"exected_dep":30,
"expected_time":30,
"last_updated":1439,
"stop_id":"00066",
"timestamp":1439
},
{
"aimed_dep":57,
"aimed_time":57,
"bus_num":"122",
"congestion":"false",
"description":"Ashington via City Centre",
"direction":"Inbound",
"exected_dep":57,
"expected_time":57,
"last_updated":1439,
"stop_id":"00066",
"timestamp":1439
}
]
}
对不起,我忘了提,这段代码:
DublinBusObject dublinBusObject = new DublinBusObject(busRoute,
busDescription, bueTime, busStopId);
dublinBusObjects.add(dublinBusObject);
不运行并将新对象添加到 ArrayList。
【问题讨论】:
-
有什么问题?
-
liveUpdateUrl的值是多少? -
这是我在帖子中的 JSON url。
-
如何使用调试器,设置断点并逐步检查?
-
URL 还是实际的 JSON 字符串?
标签: java android json android-asynctask