Java @JsonIgnoreProperties不';不允许通过@RequestBody设置值?
我试图允许序列化我的对象,但不包括一些字段。假设我有一门课:Java @JsonIgnoreProperties不';不允许通过@RequestBody设置值?,java,serialization,jackson,Java,Serialization,Jackson,我试图允许序列化我的对象,但不包括一些字段。假设我有一门课: class UserInfo { String userName; String password; //getters & setters } 出于某种目的,我需要序列化它,但不包括密码字段。所以我补充说: @JsonIgnoreProperties({"password"}) //or @JsonIgnoreProperties(value = {"amountD
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
注释的方法,它成功了),但是“手动”创建一个类的实例的工作与预期的一样,并且密码
字段没有出现。我做错了什么?当有人使用此端点时,它会发送json文本。您的方法将其反序列化为UserInfo类对象。在此过程中,反序列化程序尝试设置UserInfo类的每个字段。首先,它尝试设置“userName”字段,然后它发现“password”字段是可忽略的,并且没有设置进去。仅此而已。这意味着@RequestBody通过序列化转换我的请求?我能用其他方式实现我的目标吗?请告诉我你想用这个目标做什么?你得到了完整的目标,接下来呢?您需要忽略密码字段的位置?我有一个对象应该作为RabbitMQ
消息发送。应该传递一些字段(amount、id、refName等)但是请求还需要密码和签名参数,这些参数不应该发送到RabbitMQ
,而且我不能更改请求格式,因为它已经被很多用户使用。也许你应该使用UserInfoDTO对象而不使用一些字段?这是我想到的,但我认为这不是一个好的做法。。。但事实证明这是一种模式!看来这很有帮助,我来看看。谢谢(来自乌克兰的问候:D)