@ResponseBody
@RequestMapping(value="/getUser")
public JSONObject getContent(@ReqeustBody User user)
这里是我的控制器代码。
@Data
public class User{
private String username = "administrator";
private String password = "123456";
private Integer age = 18;
}
这里是我的User
班级代码。
{
"username":"admin",
"password":"000",
"age":""
}
当我POST
在JSON
上面,我得到的age
属性为null
。
我想用默认值Jackson
反序列化空字段(""
或null
)JSON
。
像这样:
{
"username":"admin",
"password":"000",
"age":18
}
我应该怎么办?
您可以定义一个自定义的 getter 属性,在null
.
public Integer getAge() {
if (age == null) {
return 18;
} else {
return this.age;
}
}
请注意,您无法更改该setAge
方法,因为在这种情况下它不会被调用,事实上没有age
字段会通知 Jackson 调用该方法。
另一种方法是使用自定义构造函数并使用JsonSetter
带有值的注释Nulls.SKIP
指示应跳过输入空值且不进行赋值的值;这通常意味着该属性将具有其默认值。
如下:
public class User {
@JsonSetter(nulls = Nulls.SKIP)
private Integer age;
public User() {
this.age = 18;
}
...
}
的@JsonSetter
是存在于包com.fasterxml.jackson.annotation
,并且可以使用被导入为行家依赖性
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>YOURVERSION</version>
</dependency>
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句