java - jackson 通过删除 'is' 重命名原始 boolean 字段

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

我有课

public class MyResponse implements Serializable {

    private boolean isSuccess;

    public boolean isSuccess() {
        return isSuccess;
    }

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

Getter 和 setter 由 Eclipse 生成。

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

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

在 JSON 中, key 以 {"success": true} 的形式出现。

我希望 key 作为 isSuccess 本身。 Jackson 在序列化时是否使用了 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"),因为它只有一个 value 元素

关于java - jackson 通过删除 'is' 重命名原始 boolean 字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32270422/

相关文章:

asp.net - 我可以将 JSON 字符串转换为 JsonResult 吗?

.net - 从 JSON Schema 生成 C# 类

json - 为什么 Boost 属性树 write_json 将所有内容都保存为字符串?有可能改变

javascript - 如何将 JavaScript 对象编码为 JSON?

json - 下载 jackson.codehaus.org jar

c# - Json.Net 中的 PreserveReferencesHandling 和 Refe

python - 如何更改可序列化 python 对象的 json 编码行为?

python - 将json字符串反序列化为python中的对象

python - Python中的JSON输出排序

javascript - 使用 JSON 制作 XmlHttpRequest POST