java – Jackson通过删除’is’来重命名原始布尔字段

这可能是重复的.但是我没有找到解决办法.

我有一个

public class MyResponse implements Serializable {

    private boolean isSuccess;

    public boolean isSuccess() {
        return isSuccess;
    }

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

Getters和setter由Eclipse生成.

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

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

在JSON中,关键在于{“成功”:true}.

我想要的键是asSuccess本身.杰克逊在序列化时使用setter方法吗?如何使密钥作为字段名称本身?

解决方法

这是一个稍晚的答案,但可能对任何人来到这个页面有用.

一个简单的解决方案来改变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”),因为它只具有单个值元素

相关文章

最近看了一下学习资料,感觉进制转换其实还是挺有意思的,尤...
/*HashSet 基本操作 * --set:元素是无序的,存入和取出顺序不...
/*list 基本操作 * * List a=new List(); * 增 * a.add(inde...
/* * 内部类 * */ 1 class OutClass{ 2 //定义外部类的成员变...
集合的操作Iterator、Collection、Set和HashSet关系Iterator...
接口中常量的修饰关键字:public,static,final(常量)函数...