加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 使用gson反序列化时将默认值设置为变量

发布时间:2020-12-14 05:32:55 所属栏目:Java 来源:网络整理
导读:我正在尝试将 JSON转换为Java对象.当一对的某个值为空时,应该设置一些默认值. 这是我的POJO: public class Student { String rollNo; String name; String contact; String school; public String getRollNo() { return rollNo; } public void setRollNo(St
我正在尝试将 JSON转换为Java对象.当一对的某个值为空时,应该设置一些默认值.

这是我的POJO:

public class Student {      
    String rollNo;
    String name;
    String contact;
    String school;

    public String getRollNo() {
        return rollNo;
    }
    public void setRollNo(String rollNo) {
        this.rollNo = rollNo;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getSchool() {
        return school;
    }
    public void setSchool(String school) {
        this.school = school;
    }
}

JSON对象示例

{
  "rollNo":"123","name":"Tony","school":null
}

所以如果学校是空的,我应该把它变成一个默认值,比如“学校”:“XXX”.在反序列化对象时,如何配置Gson?

解决方法

如果null在JSON中,Gson将覆盖您可能在POJO中设置的任何默认值.你可以去创造一个 custom deserializer的麻烦,但是在这种情况下可能是过度的.

我认为最简单(并且可以说是最适合你的用例)的事情是相当于Lazy Loading.例如:

private static final String DEFAULT_SCHOOL = "ABC Elementary";
public String getSchool() {
    if (school == null) school == DEFAULT_SCHOOL;
    return school;
}
public void setSchool(String school) {
    if (school == null) this.school = DEFAULT_SCHOOL;
    else this.school = school;
}

注意:这个解决方案的大问题是为了更改默认值,您必须更改代码.如果您希望默认值可自定义,则应该使用上面链接的自定义解串器.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读