java@JsonIgnoreProperties不允许通过@RequestBody设置值?
我试图允许序列化我的对象,但不包括一些字段。假设我有一门课:
class UserInfo {
String userName;
String password;
//getters & setters
}
出于某种目的,我需要序列化它,但不包括密码字段。所以我补充说:
@JsonIgnoreProperties({"password"}) //or
@JsonIgnoreProperties(value = {"amountDelta"}, allowGetters = true, allowSetters = true)
然后,我试图通过@RequestBody
包装我的类的一个实例:
@RequestMapping(value = "test", method = POST, produces = "application/json")
public String testBodyWrapping(@RequestBody UserInfo userInfo) {
return userInfo.getPassword();
}
密码总是null
!(我测试了这个删除@JsonIgnoreProperties
注释的方法,它是有效的),但是创建一个类的实例“手动”工作正常,并且password
字段没有出现。我做错了什么
# 1 楼答案
当有人使用这个端点时,它会发送json文本。将其反序列化为UserInfo类对象的方法。在此过程中,反序列化程序尝试设置UserInfo类的每个字段。首先,它尝试设置“用户名”字段,然后它发现“密码”字段是可忽略的,并且没有设置。仅此而已