有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

  1. # 1 楼答案

    当有人使用这个端点时,它会发送json文本。将其反序列化为UserInfo类对象的方法。在此过程中,反序列化程序尝试设置UserInfo类的每个字段。首先,它尝试设置“用户名”字段,然后它发现“密码”字段是可忽略的,并且没有设置。仅此而已