我有一个对象,其属性为isTechnician。如果我通过Spring RestController返回此对象,则http响应json中的属性称为技术员。 为什么要进行弹簧切割?如何禁用它?
@Document
public class User {
...
private boolean isTechnician;
...
public boolean isTechnician() {
return isTechnician;
}
public void setTechnician(boolean technician) {
isTechnician = technician;
}
}
RestController
@GetMapping("user")
public List<User> GetUsers() {
var query = new Query();
query.addCriteria(where("disabled").is(false));
return mongoTemplate.find(query, User.class);
}
答案 0 :(得分:1)
此问题的简单解决方案是在getter函数上使用批注@JsonProperty。
@JsonProperty("isTechnician")
public boolean isTechnician() {
return isTechnician;
}
现在您的JSON将变为
{
"isTechnician":true
}
希望它对您有帮助。
答案 1 :(得分:1)
默认情况下,杰克逊在序列化和反序列化时对getter和setter具有可见性,因此只需使用JsonAutoDetect禁用它即可。
@JsonAutoDetect(fieldVisibility = Visibility.ANY, getterVisibility = Visibility.NONE, setterVisibility = Visibility.NONE)
答案 2 :(得分:0)
您的isTechnician
吸气剂不符合标准。您应该将其命名为isIsTechnician
或getIsTechnician
(因为field属性被称为isTechnician
)
或
用@JsonProperty("isTechnician")
注释您的字段。
Jackson(默认的Spring JSON解析器)将忽略 getter名称(从中获取相应的JSON密钥名称),并使用在@JsonProperty
批注中指定的值。