【问题标题】:Ignore @JsonValue annotation without subclassing忽略 @JsonValue 注释而不进行子类化
【发布时间】:2019-12-23 16:24:03
【问题描述】:

假设某个第三方库中有一个类层次结构。其中一个类具有@JsonValue 注释。它导致只有一个字段的序列化/反序列化。是否可以在不进行子类化的情况下忽略@JsonValue注解并序列化所有对象字段?

【问题讨论】:

    标签: java json jackson jackson-databind


    【解决方案1】:

    您可以定义一个 MixIn 并通过属性或 getter 覆盖 @JsonValue - 取决于注释在第三方库中的设置位置。

    假设我们有一个类 Pojo 和一个 @JsonValue 注释成员 prop

    class Pojo {
        @JsonValue
        private String prop;
        private String prop2;
        // getters and setters
    }
    

    然后我们定义一个抽象的MixIn 类,如下所示,覆盖特定的成员或方法:

    abstract class MixIn {
        @JsonValue(false) // either annotating members
        private String prop;
    
        @JsonValue(false) // or annotating methods
        abstract String getProp();
    }
    

    这可以添加到ObjectMapper,如下所示:

    objectMapper.addMixIn(Pojo.class, MixIn.class);
    

    不仅仅是prop,现在propprop2 都被序列化了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-06-07
      • 1970-01-01
      • 2016-05-22
      • 1970-01-01
      • 2012-09-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多