Json阵列大小坚持到10

时间:2017-05-24 04:31:49

标签: android json parsing google-books

我正在尝试使用Gson解析Google Books API的项目(书籍),但出于某种原因,如果我尝试访问的索引大于崩溃的数量,则JsonArray大小会保持为10,但是数组中应该有10000多个对象。我试图用android studio中的JSON库解析它但我有完全相同的错误。

public String parse(String jsonLine) {
    JsonElement jelement = new JsonParser().parse(jsonLine);

    System.out.println("jelement " + jelement.toString());
    System.out.println("Number of objects " + jelement.getAsJsonObject().get("totalItems"));
    JsonObject jobject = jelement.getAsJsonObject();
    System.out.println("jobject " + jobject.toString());
    JsonArray jarray = jobject.getAsJsonArray("items");
    jobject = jarray.get(500).getAsJsonObject();

错误:

  

对象数量10275

     

致命的例外:主程序:   java.lang.IndexOutOfBoundsException:索引500无效,大小为10

1 个答案:

答案 0 :(得分:0)

我认为此API是分页API,例如,假设您正在调用Google Books API。

现在可能有数千/数百万本书。但是为了有效实施API,他们可能只发送前10本书,

实施例: API调用: http://www.somewebsite.com/api/books 结果将是10本书的结果。但是JSON总计有书数。因此,使用此功能可以访问分页API

{
  totalBooks: 100,
  books: [
    {
      //Book1
    },
    {
      //Book2
    }
  ]
}

所以现在有100本书但仍然只收到10本书。 因此,要访问第55本书,您可能需要提出类似的请求 API: http://www.somewebsite.com/api/books/5

对此API调用的响应将包含从51到60的书籍。

{
  totalBooks: 100,
  books: [
    {
      //Book51
    },
    {
      //Book52
    }
  ]
}