【问题标题】:JSONparsing in google books api谷歌图书 api 中的 JSON 解析
【发布时间】:2017-07-29 13:36:34
【问题描述】:

我正在尝试从此 google 图书 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) {

        }

问题是当我在 Web 浏览器中检查时有 20 个结果,当我在 logcat 中记录 books.length() 时它也显示 20 个结果,但它会跳过一些书并显示更少的结果。请帮忙。

【问题讨论】:

  • 你怎么能得出你得到较少结果的结论?
  • 在 android 模拟器中运行应用程序时得到的结果较少
  • 那它在真机上效果好吗?
  • 真机还没试过
  • 你说登录 books.length() 时会显示 20 个结果,那么问题是什么?

标签: android json parsing


【解决方案1】:

您得到的结果较少,因为在 for 循环中,当您解析数据时发生异常并且您中断了 for 循环。数据显示在异常发生之前哪些数据添加到了您的booksList

所以调试for循环来检测你尝试解析哪个参数没有找到所以异常发生

谢谢

【讨论】:

  • 我试过调试。问题在于作者,它会跳过一些作者并存储一些。当我注释掉作者并在我的书单中插入“”时,它会显示 20 个列表项。
  • @AmmarHussain 您可以使用 try catch 来解析作者。它会工作
  • 非常感谢它的工作。你能告诉我为什么它与 try/catch 一起工作吗?
  • @AmmarHussain try catch 将防止从 for 循环中中断。请接受我的回答
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-10-11
  • 1970-01-01
  • 1970-01-01
  • 2014-03-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多