我正在处理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);
杰克逊识别的所有注释集可以混合在一起。有关更多详细信息,请查看杰克逊文档。