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

时间:2015-08-26 06:01:30

标签: java spring jersey jackson

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

我怎样才能帮助我。

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

我试过这个

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

5 个答案:

答案 0 :(得分:22)

尝试在您的课程中使用@JsonIgnore@JsonProperty,如下所示:

private String password;

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

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

答案 1 :(得分:4)

如果您不想手动创建getter / setter(例如,getter / setter),也可以采用这种方式。  使用龙目岛的@Data时)

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

答案 2 :(得分:1)

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

答案 3 :(得分:0)

就我而言,它有助于这样做:

@JsonProperty
private String password;

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

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

答案 4 :(得分:0)

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

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

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