当前位置: 首页 > 面试题库 >

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

夏侯臻
2023-03-14
问题内容

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

我有一堂课

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方法?如何使关键字成为字段名称本身?


问题答案:

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

更改Jackson序列化为JSON时使用的名称的一种简单html" target="_blank">解决方案是使用@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元素



 类似资料:
  • 这可能是复制品。但我找不到解决我问题的办法。 我有课 getter和setter由Eclipse生成。 我希望密钥作为本身。Jackson在序列化时是否使用setter方法?如何使密钥成为字段名称本身?

  • 问题内容: 我有一个特定的JSON节点,它对应于导入org.codehaus.jackson.JsonNode,而不是导入org.codehaus.jackson.map.JsonNode。 我想从上述数组的所有JSON节点中删除“ familyName”和“ middleName”。有什么办法可以做到这一点? 问题答案: 我还没有测试过,但是我认为这样可以满足您的需求: 您还可以使用Jackon

  • 我想使用Spring的RestTemplate plus Jackson来使用Web服务。我已经学习了几本教程,并且已经达到了创建DAO的目的。这是我获取所有域对象的方法: 但我的Web服务不会立即返回Station对象数组,而是以这种方式返回一个更具语义的表达式: 所以我的问题是,我不知道如何“告诉”RestTemplate在“stations”指示符之后立即解析对象列表,而不创建临时对象,这似

  • 当我尝试反序列化汽车类时,我得到了下面的错误。杰克逊正试图在父类中的子元素中搜索字段。我如何确保杰克逊使用适当的子类型进行反序列化?我相信我需要使用混合/客户转换器。但我不确定如何在这个特定场景中使用它们。 注意:在我的例子中,除TestMain之外的所有类都在一个jar文件中,我不能修改源文件。 错误 线程"main"中的异常com.fasterxml.jackson.databind.exc.

  • 问题内容: 在Jersey上使用Jackson 处理器时,何时以及为何需要在两者之间使用注释? 杰克逊(Jackson)还提供了自己的服务提供商以直接使用。这种方法缺少什么?还是为什么我比其他人更喜欢 ps:我也用弹簧 问题答案: 为了生成JSON,通常只需指定即可。但是,这将默认采用JAXB路由。 使用Object-> JAXB-> JSON,您必须注释要映射的类。这可以很好地工作,但是一旦您要

  • 我如何告诉Jackson忽略JSON名称? 我有以下POJO: 当我有这样的东西: “ABCName”:“foo”,然后杰克逊没有认出它抛出错误。 它期望的是: “abcName”:“foo”。 代码: 输出:{"abcname":"Foo"} 然后我试着用@JsonProperty(“ABCName”)注释ABCName 在我注释并运行代码之后,我得到的是:{“ABCName”:“Foo”,“A