我有一个实体类帐户。它有很多字段。现在大多数都在REST调用中暴露,除非我明确忽略了/usr/share/terminfo/
的密码字段,但我将添加更多字段,我不想忘记将@JsonIgnore添加到不应该的新内容中暴露。
我是否可以反转曝光,以便我明确地必须启用要导出的字段,默认情况下它不会被曝光?
@JsonIgnore
在这里使用Spring Data REST,所以其他所有东西都只是存储库,没有额外的层来做一些聪明的事情。
答案 0 :(得分:2)
在Jackson
库
第一种方式:
从@Data
类中删除Account
注释,并仅将getter添加到要公开的字段。为了确保不会排除没有getter的属性,请将@JsonIgnoreProperties(ignoreUnknown=true)
添加到Account
类
第二种方式:
用Account
课程包裹您的AccountForJson
课程。例如:
public class AccountForJson {
private Account account;
public MyClassForJson(Account accountToWrapped) {
this.account = accountToWrapped;
}
/**
* Example of property that you want to expose
*/
public String getName() {
return this.account.getName();
}
}
p.s:Jackson
github存储库中有一个用于该功能的open issuse,这里是用于观看该问题的链接 - Add @JsonIncludeProperties(propertyNames)
(reverse of @JsonIgnoreProperties
)