2016-03-09 4 views
0

GSON метания исключения нулевого указателя, когда поле отсутствует в формате JSONGSON бросать исключения нулевого указателя, когда поле отсутствует в JSON

ReviewClass:

public class ReviewClass 
{ 
private String name; 

private List<Review> reviews; 

public String getName() { 
    return name; 
} 

public void setName(String name) { 
    this.name = name; 
} 

public List<Review> getReviews() { 
    return reviews; 
} 

public void setReviews(List<Review> reviews) { 
    this.reviews = reviews; 
} 
} 

class Review { 
private String name; 

public String getName() { 
    return name; 
} 

public void setName(String name) { 
    this.name = name; 
} 

} 

Главный код:

ReviewClass reviewResults = gson.fromJson(reader, ReviewClass.class); 
System.out.println(reviewResults.getReviews().get(0).getName()); 

JSON (поле обзора отсутствует):

{"itemId":978998,"name":"Palet","salePrice":15.88,"upc":"708431191570","categoryPath":"Toys} 

Итак, GSON бросает исключение нулевого указателя, когда в json отсутствует поле отзывов. ПОЖАЛУЙСТА ПОМОГИТЕ.

ответ

0

Gson корректно возвращает null значение для getReviews(), поскольку в JSON нет отзывов. Это ваш вызов println(), вызывающий NPE, потому что вы не можете позвонить .get(0) по телефону null.

Добавить нуль-чек перед вашим println(), например.

if (reviewResults.getReviews() != null) { 
    System.out.println(reviewResults.getReviews().get(0).getName()); 
} 

В качестве альтернативы ваш метод getReviews() возвращают ненулевой List когда reviews является null.

+0

СПАСИБО LOT @ dimo414 –