@JsonIgnoreProperties不允许通过@RequestBody设置值?

时间:2017-06-15 14:14:07

标签: java serialization jackson

我正在尝试允许序列化我的对象,不包括某些字段。所以说我有一个班级:

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 个答案:

答案 0 :(得分:1)

当有人使用此端点时,它会发送json文本。您的方法将其反序列化为UserInfo类对象。在此过程中,反序列化器尝试设置UserInfo类的每个字段。首先,它尝试设置' userName'领域,没关系,之后它找到了密码'这个领域是可以忽视的,并没有设置。这就是全部。