2017-05-24 9 views
-1

Gsonを使用してGoogle Books APIのアイテム(本)を解析しようとしていますが、何らかの理由でJsonArrayのサイズが10に固定されています。クラッシュすることになりますが、配列には10000以上のオブジェクトが存在するはずです。私はアンドロイドスタジオからJSONライブラリで解析しようとしましたが、まったく同じエラーがありました。Json配列のサイズが10に固定されています

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(); 

とエラー:

Number of objects 10275

FATAL EXCEPTION: main Process: java.lang.IndexOutOfBoundsException: Invalid index 500, size is 10

+0

に本を持っています、あなたは私たちに応答を表示することができますjsonLine? –

+0

アイテムjsonArrayはインデックス500の値を取得する間にオブジェクトが10個しかないためです。 – ashish

+0

totalItemsを印刷してアイテムにアクセスしていますが、なぜそれらは同じであるべきだと思いますか? – csmckelvey

答えて

0

私はこのAPIは、例えば、意味ページ分割APIだと思う、あなたがGoogleブックスAPIの呼び出しを行っているとしましょう。

現在、数千〜数百万の書籍があります。 APIの呼び出し::http://www.somewebsite.com/api/books 結果は10冊の結果になりますが、APIの効率的な実装のために、彼らは

例、最初の10冊を送信することがあります。しかしJSONには総書籍数があります。ですから、

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

ページ区切りのAPIにアクセスすることができ、これを使用すると、だから今100冊の本がありますが、それでも、あなただけの10本を受け取ります。第55回ブックにアクセスするには、あなたが APIのような要求をしなければならないかもしれません だから:このAPIコールにhttp://www.somewebsite.com/api/books/5

レスポンスは51から60

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

私はそれが理由だと思う、私はテストし、結果に戻って来る返信する –

+0

それは素晴らしいです:) – Siva

+0

それは、完璧な回答ありました –

関連する問題