假设我有班级,即
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; } }