我怎么能忽略json响应中的字段?

时间:2017-06-01 08:38:07

标签: java json jackson

@Column(name = "password", nullable = false)
@JSonIgnore
private String password;

我在我的模型类中给出了上面的字段,但它对POST方法没有用。

错误:列中的空值"密码"违反非空约束

4 个答案:

答案 0 :(得分:1)

您已将字段设置为nullable = false - 这意味着密码不能为空,因此某些代码验证不允许您将空值传递到password

答案 1 :(得分:1)

我解决了这个问题。 这是我的旧代码:     @Column(name = "password", nullable = false)

`@JSonIgnore`

`private String password;` 

我们可以使用JSonProperty代替JSonIgnore。以下是代码:

这是新代码:     @Column(name = "password", nullable = false)

@JsonProperty(access = Access.WRITE_ONLY)

private String password;

感谢大家的帮助......

答案 2 :(得分:0)

我认为你正在混淆请求和回复:

  • @JsonIgnore会在将字段解析为JSON作为响应对象时忽略该字段。 (例如某些API调用)
  • 如果您发布应该使用非空密码创建对象的数据,则该请求必须具有此参数。 @JsonIgnore不会改变任何内容。

如果您希望在不发送密码时使POST数据有效,则需要创建一个可以保存密码的对象。这可以是一个可保存的超类,其中子类只有密码,或者只是另一个与另一个拥有密码字段的类有关系的类。

如果您不想要单独的类,则必须将密码添加到请求中,或者将@Column注释中的nullable属性更改为true。

答案 3 :(得分:0)

在getter方法上仅添加@JsonIgnore

@Column(name = "password", nullable = false)
private String password;

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

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