【问题标题】:GSON throwing null pointer exception when a field is missing in json [duplicate]当json中缺少字段时,GSON抛出空指针异常[重复]
【发布时间】:2016-03-09 05:04:26
【问题描述】:

当 json 中缺少字段时,GSON 抛出空指针异常

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}

所以,当 json 中没有“reviews”字段时,GSON 会抛出空指针异常。请帮助我。

【问题讨论】:

    标签: java json gson pojo


    【解决方案1】:

    Gson 正确返回了 getReviews()null 值,因为 JSON 中没有任何评论。导致 NPE 的是您的 println() 调用,因为您无法在 null 上调用 .get(0)

    println() 之前添加一个空检查,例如

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

    reviewsnull 时,或者让您的getReviews() 方法返回非空List

    【讨论】:

      猜你喜欢
      • 2018-08-14
      • 2023-03-14
      • 1970-01-01
      • 1970-01-01
      • 2011-05-13
      • 2020-11-22
      • 2020-08-10
      • 2013-03-21
      相关资源
      最近更新 更多