一尘不染

杰克逊通过删除“ is”来重命名原始布尔字段

json

这可能是重复的。但是我找不到解决问题的方法。

我有一堂课

public class MyResponse implements Serializable {

    private boolean isSuccess;

    public boolean isSuccess() {
        return isSuccess;
    }

    public void setSuccess(boolean isSuccess) {
        this.isSuccess = isSuccess;
    }
}

获取器和设置器由Eclipse生成。

在另一个类中,我将该值设置为true,并将其写为JSON字符串。

System.out.println(new ObjectMapper().writeValueAsString(myResponse));

在JSON中,关键字为{"success": true}

我想要钥匙isSuccess本身。杰克逊在序列化时是否使用setter方法?如何使关键字成为字段名称本身?


阅读 290

收藏
2020-07-27

共1个答案

一尘不染

这是一个稍晚的答案,但对其他访问此页面的人可能有用。

更改Jackson序列化为JSON时使用的名称的一种简单解决方案是使用@JsonProperty批注,因此您的示例将变为:

public class MyResponse implements Serializable {

    private boolean isSuccess;

    @JsonProperty(value="isSuccess")        
    public boolean isSuccess() {
        return isSuccess;
    }

    public void setSuccess(boolean isSuccess) {
        this.isSuccess = isSuccess;
    }
}

然后将其序列化为JSON {"isSuccess":true},但具有不必修改您的getter方法名称的优点。

请注意,在这种情况下,您也可以编写注释,@JsonProperty("isSuccess")因为注释只有一个value元素

2020-07-27