忽略@JsonValue注释而不进行子类化

时间:2019-12-23 16:24:03

标签: java json jackson jackson-databind

让我们假设某些第三方库中有一个类层次结构。这些类之一具有@JsonValue批注。它仅导致一个字段的序列化/反序列化。是否可以忽略@JsonValue注释而不进行子类化并序列化所有对象字段?

1 个答案:

答案 0 :(得分:3)

您可以定义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);

现在propprop都已被序列化,而不仅仅是prop2