想要在密码上添加 @JsonIgnore 属性 作为响应 Json

Want to Add @JsonIgnore property on Password in response Json

我想在用户域的密码 属性 上添加 @JsonIgnore of Jackson 以便我必须能够发送带有密码的 Json 并保存我的数据在数据库中,但作为回应,我不想显示密码。

我怎样才能实现这个请帮助我。

我试图在定义属性的用户的域级别使用它,但它完全忽略了 getter 和 setter 方法中的 属性。

我试过了

private String password;
 @JsonIgnore
        public String getPassword() {
            return this.password;
        } 

像这样在 class 中同时使用 @JsonIgnore and @JsonProperty

private String password;

@JsonIgnore
public String getPassword() {
    return password;
}

@JsonProperty
public void setPassword(String password) {
    this.password = password;
}

我认为你应该使用 DTO Pattern 来设置/更改密码。

就我而言,这样做很有帮助:

@JsonProperty
private String password;

@JsonIgnore
public String getPassword() {
    return password;
}

public void setPassword(String password) {
    this.password = password;
}

如果您不想手动创建 getters/setters(例如 当使用 lombok 的 @Data)

@JsonProperty(access = Access.WRITE_ONLY)
private String password;

尝试使用 @JsonProperty 的 access 属性,如下所示。 这将避免反序列化,但由于提供了写入权限,因此可以保存密码。

@JsonProperty(access = Access.WRITE_ONLY)
    @Column(name = "encrypted_password")
    private String password;

访问设置,这意味着 属性 只能作为反序列化的一部分写入(设置)(使用“setter”方法,或分配给 Field,或作为 Creator 参数传递)但是不会被读取(get)到序列化,即属性的值不被序列化。