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

前端之家收集整理的这篇文章主要介绍了java – 使用gson反序列化时将默认值设置为变量前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试将 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;
}

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

原文链接:https://www.f2er.com/java/122186.html

猜你在找的Java相关文章