我正试图从这个谷歌书籍api" https://www.googleapis.com/books/v1/volumes?q=android&maxResults=20"
获得结果Json解析的代码是
try {
JSONObject root = new JSONObject(booksJson);
JSONArray books = root.getJSONArray("items");
for (int i = 0; i < books.length(); i++) {
JSONObject book = books.getJSONObject(i);
JSONObject info = book.getJSONObject("volumeInfo");
String title = info.getString("title");
JSONArray authors = info.getJSONArray("authors");
String author = authors.getString(0);
JSONObject imageLinks = info.getJSONObject("imageLinks");
String imageLink = imageLinks.getString("smallThumbnail");
Book bookObject = new Book(author,title,imageLink);
booksList.add(bookObject);
Log.d(LOG_TAG + " Index :", String.valueOf(i) + " : " + String.valueOf(books.length()));
}
} catch (JSONException e) {
}
问题是当我在网络浏览器中检查时有20个结果,当我在logcat中记录books.length()时它也会显示20个结果但是它会跳过一些书并显示预期的结果较少。请帮助。
答案 0 :(得分:0)
结果较少,因为在for循环中解析数据时发生了异常,并且中断了for循环。数据显示在异常发生之前,数据添加到 booksList 。
因此,调试for循环以检测您尝试解析哪个参数但未找到,因此发生了异常
谢谢