Spring RestController 从 属性 名称中删除 "is"
Spring RestController removes "is" from property name
我有一个对象 属性 isTechnician。如果我通过 Spring RestController return 这个对象,http 响应 json 中的 属性 被命名为技术员。
为什么spring cut of the is?我怎样才能禁用它?
@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);
}
您的 isTechnician
getter 不符合标准。您应该将其命名为 isIsTechnician
或 getIsTechnician
(因为字段 属性 被称为 isTechnician
)
或
用 @JsonProperty("isTechnician")
注释您的字段。
Jackson(默认的 Spring JSON 解析器)将 ignore getter 名称(从中获取相应的 JSON 键名)并使用 @JsonProperty
注释中指定的值。
此问题的一个简单解决方案是在 getter 函数上使用注释 @JsonProperty。
@JsonProperty("isTechnician")
public boolean isTechnician() {
return isTechnician;
}
现在你的 JSON 将变成
{
"isTechnician":true
}
希望对你有帮助。
默认情况下,jackson 在序列化和反序列化时可以看到 getter 和 setter,因此只需使用 JsonAutoDetect
禁用它
@JsonAutoDetect(fieldVisibility = Visibility.ANY, getterVisibility = Visibility.NONE, setterVisibility = Visibility.NONE)
我有一个对象 属性 isTechnician。如果我通过 Spring RestController return 这个对象,http 响应 json 中的 属性 被命名为技术员。 为什么spring cut of the is?我怎样才能禁用它?
@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);
}
您的 isTechnician
getter 不符合标准。您应该将其命名为 isIsTechnician
或 getIsTechnician
(因为字段 属性 被称为 isTechnician
)
或
用 @JsonProperty("isTechnician")
注释您的字段。
Jackson(默认的 Spring JSON 解析器)将 ignore getter 名称(从中获取相应的 JSON 键名)并使用 @JsonProperty
注释中指定的值。
此问题的一个简单解决方案是在 getter 函数上使用注释 @JsonProperty。
@JsonProperty("isTechnician")
public boolean isTechnician() {
return isTechnician;
}
现在你的 JSON 将变成
{
"isTechnician":true
}
希望对你有帮助。
默认情况下,jackson 在序列化和反序列化时可以看到 getter 和 setter,因此只需使用 JsonAutoDetect
禁用它 @JsonAutoDetect(fieldVisibility = Visibility.ANY, getterVisibility = Visibility.NONE, setterVisibility = Visibility.NONE)