提供多态性的去序列化/序列化参数,而无需更改pojos



我正在处理JAX-RS应用程序,其中端点消耗并产生JSON类型数据。我正在为此使用Jackson

我知道,在Jackson中处理多态性行为的一种方法之一是在pojos上使用 @JsonTypeInfo@JsonSubTypes

,但就我而言,pojos不是代码的一部分,它们嵌入在JAR文件中,我无法编辑它们。

有什么办法可以在没有POJO注释的情况下向Jackson指定此信息?

请向我指出正确的方向。

有什么办法可以在没有pojo注释的情况下向杰克逊指定此信息?

如果考虑混合注释

,使用注释仍然是有效的方法。

修改源代码不是选项时,您可以使用混合注释将杰克逊注释添加到bean中。您可以将其视为一种面向方面的方式,可以在运行时添加更多注释,以增强静态定义的方式。

首先定义混合注释接口或类:

@JsonTypeInfo(use = Id.CLASS, include = As.PROPERTY, property = "class")
public interface FooMixIn {
}

然后将ObjectMapper配置为使用定义的接口作为POJO的混合:

ObjectMapper mapper = new ObjectMapper().addMixIn(Foo.class, FooMixIn.class); 

杰克逊识别的所有注释集可以混合在一起。有关更多详细信息,请查看杰克逊文档。

最新更新