我之前提到了一个问题,指的是我在ListView中显示JSON数据的错误。我被指向AsyncTask,这让我非常困惑。我希望在我的AsyncTask中解析JSON数据并将其设置为String []数组。顺便说一下,我阅读了文档。我需要帮助来解决这个问题。这是我错误的代码:
class ShowTitlesTask extends AsyncTask<String[], Integer, String[]> {
@Override
protected String[] doInBackground(String[]... params) {
URL jsonURL = new URL("http://gdata.youtube.com/feeds/api/users/illbehonest/uploads?v=2&alt=jsonc");
URLConnection jc = jsonURL.openConnection();
InputStream is = jc.getInputStream();
String jsonTxt = IOUtils.toString(is);
JSONObject json = (JSONObject) JSONSerializer.toJSON(jsonTxt);
JSONObject jdata = json.getJSONObject("data");
JSONArray jentry = jdata.getJSONArray("items");
for (int entryNumber = 0; entryNumber<=25; entryNumber++){
JSONObject entry = jentry.getJSONObject(entryNumber);
String[][] jtitle = {entry.getString("title")};
params = jtitle;
}
return null;
}
}
答案 0 :(得分:2)
试试这个:
@Override
protected String[] doInBackground(String[]... params) {
List<String> result = new ArrayList<String>();
URL jsonURL = new URL("http://gdata.youtube.com/feeds/api/users/illbehonest/uploads?v=2&alt=jsonc");
URLConnection jc = jsonURL.openConnection();
InputStream is = jc.getInputStream();
String jsonTxt = IOUtils.toString(is);
JSONObject json = (JSONObject) JSONSerializer.toJSON(jsonTxt);
JSONObject jdata = json.getJSONObject("data");
JSONArray jentry = jdata.getJSONArray("items");
for (int entryNumber = 0; entryNumber<=jentry.lenght(); entryNumber++){
JSONObject entry = jentry.getJSONObject(entryNumber);
result.add(entry.getString("title");
}
return result.toArray(new String[result.size()]);
}
顺便说一句,您在doInBackground
中使用的某些方法会抛出不同的异常,因此您必须用try/catch
块围绕它们。
答案 1 :(得分:0)
我不知道这是否是您唯一的问题,但在您的方法标题中显示该方法返回
String[]
但实际上您会返回null