2016-05-27 4 views
0

これは初心者質問かもしれませんが、解決策が見つかりませんでした。 JSONObject.getにString変数の値を使用しようとしています。 Googleブックスへのリクエストにこれを使用する必要があります。値はOKですが、.get()内の呼び出しでは受け付けられません。 NullPointerExceptionが発生します。事前にString thumbnail = imageLinks.get (nail).toString();Android /(シンプル)JSON:JSONObject.get()の文字列値の使い方

ありがとう:エラーがここにあるように思わ

public static String getImageLink(JSONObject book) 
    { 
     JSONObject volumeInfo = (JSONObject)book.get("volumeInfo"); 
     JSONObject imageLinks = (JSONObject) volumeInfo.get("imageLinks"); 
     if (imageLinks.get("thumbnail")!=null) 
     { 

      String thumbnail = imageLinks.get("thumbnail").toString(); 
      Log.i(TAG,"LINK1:" + thumbnail); 
      return thumbnail; 
     }else{ 
      Set<String> keys = imageLinks.keySet(); 
      String[] nails = keys.toArray(new String[keys.size()]); 
      String nail = ('"'+ nails[0]+'"'); 
      String thumbnail = imageLinks.get (nail).toString(); 

      Log.i(TAG,"LINK2:" + nails[0].toString()); 
      return thumbnail; 
     } 
    } 

は、ここでは、コードスニペットです!

編集:

FATAL EXCEPTION: main 
Process: com.example.googlebooks, PID: 32387 
java.lang.NullPointerException 
at com.example.googlebooks.GoogleBooksHelper.getImageLink(GoogleBooksHelper.java:106) 
at com.example.googlebooks.TableActivity$BookListDownloadTask.onPostExecute(TableActivity.java:108) 
at com.example.googlebooks.TableActivity$BookListDownloadTask.onPostExecute(TableActivity.java:1) 
at android.os.AsyncTask.finish(AsyncTask.java:632) 
at android.os.AsyncTask.access$600(AsyncTask.java:177) 
at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:645) 
at android.os.Handler.dispatchMessage(Handler.java:102) 
at android.os.Looper.loop(Looper.java:136) 
at android.app.ActivityThread.main(ActivityThread.java:5476) 
at java.lang.reflect.Method.invokeNative(Native Method) 
at java.lang.reflect.Method.invoke(Method.java:515) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1283) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1099) 
at dalvik.system.NativeStart.main(Native Method) 

私が直接呼び出しのためのJSONレスポンスを使用している場合は、すべての作品: そしてここでは、エラーログです。 私は、リンクを呼び出すための正しいObjects/Strings(thumbnail、smallThumbnail、..)を取得します。 .get-call内の文字列変数は受け入れられません。

+0

投稿するjson rssponse –

+0

クラッシュlogcat出力をポストする。 –

+0

ログとJSON.responseが追加されました。 – Will

答えて

0

構文解析はJsonObject(ブック)構造に依存しますが、jsonオブジェクトの文字列値を取得するには、jsonObject.getString( "your_key")を使用する必要があります。あなたの文字列の値を返します。

+0

私は構文解析と構造も知っていますが、もし私が直接キー( "サムネイル")を使用すると動作しますが、キーを保持する変数( "サムネイル")を使用すると動作しません。 – Will

+0

変数をpublic static final String THUMBNIL = "thumbnail"にします。 –

関連する問題