我正在尝试使用 Guardian API 中的 JSON 对象。
这是我打电话的结果:
这是我的代码
JSONObject root = new JSONObject(jsonData);
JSONArray resultArray = root.getJSONObject("response").getJSONArray("results");
for(int i=0;i<resultArray.length();i++) {
JSONObject resultElement = resultArray.getJSONObject(i);
JSONObject blocksElement = resultElement.getJSONObject("blocks");
JSONObject mainElement = blocksElement.getJSONObject("main");
JSONArray elementsArray = mainElement.getJSONArray("elements");
JSONObject elementsElement = elementsArray.getJSONObject(0);
JSONArray assetsArray = elementsElement.getJSONArray("assets");
JSONObject assetsElement = assetsArray.getJSONObject(0);
String imageUrl = assetsElement.getString("file");
String articleTitle = resultElement.getString("webTitle");
news.add(new NewsList(articleTitle, imageUrl));
}
该代码工作正常,只是它停在 3 个元素 (i=2)
我尝试用“test”字符串替换 imageUrl
news.add(new NewsList(articleTitle, imageUrl));
但它仍然停留在 3 个元素处。
但是,当我注释掉它找到 imageUrl 的部分时,整个代码都可以工作,并给了我 10 个应该做的结果:
JSONObject root = new JSONObject(jsonData);
JSONArray resultArray = root.getJSONObject("response").getJSONArray("results");
for(int i=0;i<resultArray.length();i++){
JSONObject resultElement = resultArray.getJSONObject(i);
/*
JSONObject blocksElement = resultElement.getJSONObject("blocks");
JSONObject mainElement = blocksElement.getJSONObject("main");
JSONArray elementsArray = mainElement.getJSONArray("elements");
JSONObject elementsElement = elementsArray.getJSONObject(0);
JSONArray assetsArray = elementsElement.getJSONArray("assets");
JSONObject assetsElement = assetsArray.getJSONObject(0);
String imageUrl = assetsElement.getString("file");
*/
String articleTitle = resultElement.getString("webTitle");
news.add(new NewsList(articleTitle, "test"));
}
我在 Android 监视器中环顾四周,似乎有一个问题说
org.json.JSONException: main 没有值
但这是不正确的,因为前 3 个结果的 URL 没有任何问题,该问题仅在循环 3 次迭代后出现,我找不到任何原因导致这种情况发生。