用于宁静控制器返回的包装类,具有三个成员变量:代码,消息,数据。数据的声明类为Object.data可以是任何实体类。实体的某些成员不应出现在返回Json中。一些配置方式?
我已经知道@JsonView在接口上,并且get方法可以控制成员是否出现,但是它控制代码,msg,数据而不是data中的成员.Controller方法返回这样的Result类
public class Result{
private String code;
private String msg;
private User user;
}
public class User {
private String userName;
private String password;
}
我希望结果Json没有这样的密码
{
"code":1,
"msg":"",
"data":{
"userName":"Ted"
}
}
不喜欢
{
"code":1,
"msg":"",
"data":{
"userName":"Ted",
"password":"Tedisbear"
}
}
答案 0 :(得分:0)
一种方法是将@JsonIgnore
批注添加到password
字段
public class User {
private String userName;
@JsonIgnore
private String password;
}
那样,它将永远不会成为响应的一部分。
您还可以注释getPassword()
方法并获得相同的结果。
答案 1 :(得分:0)
使用Spring Boot的默认序列化(使用Jackson),可以通过以下三种方式进行:
@JsonIgnore
您可以尝试仅在您的吸气剂上添加@JsonIgnore
:
@JsonIgnore
private String password;
或者:
@JsonIgnore
public String getPassword() {
return password;
}
@JsonProperty
访问权限您可以在字段中添加@JsonProperty
批注:
@JsonProperty(access = Access.WRITE_ONLY)
private String password;
WRITE_ONLY 访问设置,意味着该属性只能被写入(设置)以进行反序列化,而在序列化时将不会被读取(获取),即,属性的值不包含在序列化中。< / p>
@JsonIgnoreProperties
在类中添加要忽略的属性:
@JsonIgnoreProperties({"password"})
public class User {
private String userName;
private String password;
}
当我想扩展某些类并忽略父级的某些属性时,我通常会使用@JsonIgnoreProperties
。