Spring RestController从属性名称中删除“ is”

时间:2019-03-29 10:22:03

标签: spring spring-restcontroller

我有一个对象,其属性为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);
}

3 个答案:

答案 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吸气剂不符合标准。您应该将其命名为isIsTechniciangetIsTechnician(因为field属性被称为isTechnician

@JsonProperty("isTechnician")注释您的字段。

Jackson(默认的Spring JSON解析器)将忽略 getter名称(从中获取相应的JSON密钥名称),并使用在@JsonProperty批注中指定的值。