2016-06-26 14 views
1

Ich bin eine einfache Anwendung zu machen, wo ich den Barcode eines Buches scannen und holen den Titel und Autor von Google-APIs,Parsing json Objekt von Google api Rückkehr null

Nun, dies ist die URL für json (für eine insbesondere Buch ich bin Scannen)

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

diesen Code mit json in einem String

HttpURLConnection urlConnection = (HttpURLConnection)url.openConnection(); 
     InputStream inputStream = urlConnection.getInputStream(); 
     BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream,"iso-8859-1")); 
     String line = ""; 

     while ((line=bufferedReader.readLine())!=null) 
     { 
      response+=line; 
     } 

     bufferedReader.close(); 
     inputStream.close(); 
     urlConnection.disconnect(); 
     Log.d("Info",response); 
     return response; 

ich speichere das Ergebnis in einem String zu erhalten und diesen Code verwenden, um zu analysieren, durch (json_response ist ein String)

  JSONObject rootObject = new JSONObject(json_response); 
      JSONArray items = rootObject.getJSONArray("items"); 
      JSONObject items_object = items.getJSONObject(0); 
      JSONObject volume_info = items_object.getJSONObject("volumeInfo"); 
      book.setTitle(volume_info.getString("title")); 
      JSONArray authors = volume_info.getJSONArray("authors"); 
      Log.d("Info","authors array length: "+authors.length()); 
      String author=""; 
      for (int i =0;i<authors.length();i++) 
      { 
       author+=authors.getString(i)+", "; 
      } 

      book.setAuthor(author); 

Die Ausnahme ist:

Value null of type org.json.JSONObject$1 cannot be converted to JSONObject 

auch benutze ich logcat zu sehen, was in json_response enthalten ist, sieht es so etwas wie diese

null{ "kind": "books#volumes", "totalItems": 1, "items":... 

Die null hier verursacht wohl das Problem, also ... irgendwelche Erkenntnisse wie man damit umgeht ???

PS: Ich bin ein Student, zum ersten Mal mit json und Android zu tun, Code unprofessionell ist, bitte verzeihen :)

+0

Sie sollten die Variable "response" auf eine leere Zeichenfolge initialisieren. Hilft es? – Lino

+0

Sie können die [Volley] (https://developer.android.com/training/volley/simple.html) verwenden, um eine Antwort von Google zu erhalten. Verwenden Sie danach die [GSON] (https://guides.codepath.com/android/Leveraging-the-Gson-Library), die Ihnen beim Analysieren des JSON die Arbeit erleichtern wird. –

+0

Ja, es funktionierte, indem Antwort auf leere Zeichenfolge eingestellt wurde !! – Salim

Antwort

1

Mit

null{ "kind": "books#volumes", "totalItems": 1, "items":... 

bedeutet, dass der response Wert ist nicht initialisiert worden.

Sie sollten es daher zu leeren String initialisieren.