我正在开发JAX-RS
应用程序,其中端点使用并生成JSON
类型数据。我为此目的使用Jackson
。
据我所知,Jackson
中处理多态行为的方法之一是在POJO上使用@JsonTypeInfo
和@JsonSubTypes
。
但在我看来,POJO不是代码的一部分,它们已经嵌入到JAR文件中,我无法编辑它们。
有没有办法可以在没有POJO注释的情况下在外部将此信息指定给Jackson
?
请指出我之前已经讨论过的正确方向。
答案 0 :(得分:0)
有没有办法可以在没有POJO注释的情况下向Jackson外部指定此信息?
如果考虑混合注释,使用注释仍然是一种有效的方法。
当修改源代码不是一个选项时,您可以使用混合注释将Jackson annotations添加到bean。您可以将其视为在运行时添加更多注释的面向方面的方式,以增加静态定义的注释。
首先定义混合注释界面或类:
@JsonTypeInfo(use = Id.CLASS, include = As.PROPERTY, property = "class")
public interface FooMixIn {
}
然后配置ObjectMapper
以将定义的界面用作POJO的混合:
ObjectMapper mapper = new ObjectMapper().addMixIn(Foo.class, FooMixIn.class);
杰克逊认可的所有annotation sets都可以混入。有关详细信息,请查看杰克逊documentation。