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)