我正在尝试使用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
答案 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
}
]
}