2016-09-13 5 views
-1

Google APIを使用したアプリケーションを作成していますが、Googleブックスに関する詳細が取得されています。JSONでのパスの検索コード

次のJSONリンクから、著者と書籍のタイトルに関するデータを取得したいと考えています。

https://www.googleapis.com/books/v1/volumes?q=android

問題への私のアプローチ:

private Book extractFeatureFromJson(String bookJSON) { 
    try { 
     JSONObject baseJsonResponse = new JSONObject(bookJSON); 
     JSONArray items = baseJsonResponse.getJSONArray("items"); 

     // If there are results in the features array 
     for(int i=0;i<10;i++) 
     { 
      JSONObject firstFeature = items.getJSONObject(i); 
      JSONObject volumeinfo=firstFeature.getJSONObject("volumeinfo"); 
      String title=volumeinfo.getString("title"); 
      JSONArray author= volumeinfo.getJSONArray("authors"); 

      for(int j=0;j<author.length();j++) 
      { 
       JSONObject authorFeature=author.getJSONObject(j); 
      } 

      // Create a new {@link Event} object 
      return new Book(title,author); 

     } 
    } catch (JSONException e) { 
     Log.e(LOG_TAG, "Problem parsing the earthquake JSON results", e); 
    } 
    return null; 
} 

パスへの私のアプローチは間違っていると間違いがある場合、私はそれを把握することはできません。

+0

JSONレスポンスを挿入できますか? –

+0

ここはhttps://www.googleapis.com/books/v1/volumes?q=androidです。 –

+0

'author.getJSONObject(j);'あなたは 'authors'の内容がオブジェクトだと思いますか? – njzk2

答えて

0

最初のサイクルの反復(1〜10)で本を返します。書籍リストと返品リストを作成する必要があります。

0

クラスBookはパラメータとしてString title, JSONArray authorsを受信して​​いますが、これは正しいですか?

そして、私はあなたがList<Book> booksコレクションを作成し、これに応答は確かにJSONs作業が重要とこれ以上の答えはあなたがこれを手動で処理できるように十分なヒントを与える必要があるためである方法を理解

0

が含まれていることを各書籍を追加することをお勧めします。私の提案では、手動で解析するのではなく、自動ツールでこれを処理できるようにすることです。

Gsonを使って自動的に作業クラスに解析できます。 Gsonに何を解析するかを教えてください。これを処理できるJsonSchema2Pojoという素晴らしいツールがあります。 Gradle Plugin here:https://github.com/joelittlejohn/jsonschema2pojo/tree/master/jsonschema2pojo-gradle-plugin ビルド時にGsonが理解できるクラスを生成することができます。リポジトリに用意されている設定を使用し、必要に応じて調整することをお勧めします。

プラグインはjsonスキーマを解釈してクラスを生成するため、プラグインの設定でスキーマを使用してディレクトリを指す必要があります。最初はそれは別の複雑さのように見えるかもしれませんが、http://jsonschema.net/ウェブページを使って上に貼り付けた例のような答えを使ってスキーマを生成することができます。

Gsonとjsonschema2pojoを使用すると、このタスクをほとんど気にすることなく、より重要なタスクに集中できます(カスタムパーサーを書く必要がある場合を除きます)。設定には時間がかかるかもしれませんが、カスタムパーサーを作成するよりも速く、スキーマを変更するだけで簡単に変更できます。これは特にあなたがコントロールできない外部APIを使うと便利です。