2016-10-23 2 views
1

Когда я пытаюсь разобрать «издатель» из объекта json, он возвращает ошибку, но если я разбираю только «заголовок», он отлично работает, даже «title» и «publisher» являются братьями и сестрами.return null при разборе json в цикле

public ArrayList<BookData> parseJSON(String jsonString){ 
     try{ 
      JSONObject obj = new JSONObject(jsonString); 
      JSONArray jsonArray = obj.getJSONArray("items"); 
      for(int i=0;i<10;i++){ 
       JSONObject object = jsonArray.getJSONObject(i); 
       JSONObject volumeInfo = object.getJSONObject("volumeInfo"); 
       //this title works fine 
       String title = volumeInfo.getString("title"); 
       //this publisher is throwing null pointer exception 
       String publisher = volumeInfo.getString("publisher"); 
       //Log.v("testing title", publisher); 
       list.add(new BookData(title, "publisher")); 

      } 
      return list; 

     }catch (Exception e){e.printStackTrace();} 
     return null; 
    } 

JSON здесь:

"volumeInfo":{ 
      "title":"Organic Chemistry", 
      "authors":[ 
       "Jonathan Clayden", 
       "Nick Greeves", 
       "Stuart Warren" 
      ], 
      "publisher":"Oxford University Press" 
      } 
+0

{ "volumeInfo": { "Название": "Органическая химия", "Авторы": [ "Джонатан Клейден", "Ник Greeves", "Стюарт Уоррен" ], "издатель": «Oxford University Press» }} json должен быть –

ответ

0

list.add(new BookData(title, "publisher")); заменить это ниже данный код.

list.add(new BookData(title, publisher)); 
+0

Я сделал это .. все еще его не работает, но когда я даю его в кавычках, тогда он отлично работает – Asad

+0

acutally String publisher = volumeInfo.getString ("publisher"); – Asad

+0

эта ошибка выделения строки – Asad

0

поставить нулевую проверку для издателя может быть вы получаете NullPointerException, надеется, что это поможет вам

0

С documentation из getString вы можете увидеть, что:

бросает NullPointerException - если указанное имя не имеет никакого отображения

Так что, если title работает отлично, что означает, что publisher не существует в вашем JSON. Проверьте свою Json String снова.

Надеюсь, это поможет.

0

У вас есть издатель в кавычках, когда вы добавляете его в массив: list.add (новый BookData (название, «издатель»)), это передает строковый литерал, который вы хотите передать в издателе переменных. Поэтому просто замените «издатель» в этой строке издателем.

+0

Я сделал это, но все еще не работал, но когда я даю его в кавычках, тогда он отлично работает – Asad

+0

фактически String publisher = volumeInfo.getString ("publisher"); исключение этой строки – Asad

Смежные вопросы