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

java – 如果json中的值为null,则为属性提供默认值

发布时间:2020-12-15 00:55:44 所属栏目:Java 来源:网络整理
导读:假设我有班级,即 private class Student { private Integer x = 1000; public Integer getX() { return x; } public void setX(Integer x) { this.x = x; } } 现在假设json是“{x:12}”并进行反序列化,那么x的值为12.但是如果json是“{}”则x = 1000的值(ge
假设我有班级,即
private class Student {
        private Integer x = 1000;

        public Integer getX() {
            return x;
        }

        public void setX(Integer x) {
            this.x = x;
        }
    }

现在假设json是“{x:12}”并进行反序列化,那么x的值为12.但是如果json是“{}”则x = 1000的值(get是来自属性的默认值在课堂上宣布).

现在,如果json是“{x:null}”,则x的值变为null,但即使在这种情况下,我希望x的值为1000.如何通过jackson执行此操作.提前致谢.

我通过以下方法反序列化,如果它仍然有帮助:
objectMapper.readValue(< json string在这里>,Student.class);

解决方法

您应该能够覆盖设置器.将@JsonProperty(value =“x”)注释添加到getter和setter中,让Jackson知道如何使用它们:
private class Student {
    private static final Integer DEFAULT_X = 1000;
    private Integer x = DEFAULT_X;

    @JsonProperty(value="x")
    public Integer getX() {
        return x;
    }

    @JsonProperty(value="x")
    public void setX(Integer x) {
        this.x = x == null ? DEFAULT_X : x;
    }
}

(编辑:李大同)

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

    推荐文章
      热点阅读