杰克逊支持没有注释和专用bean字段的多态性

时间:2011-12-02 16:58:15

标签: json polymorphism jackson

有没有办法在Jackson中使用注释或专用bean字段执行多态类的序列化/反序列化?我必须支持无法修改且不希望使用注释的类层次结构。

我希望能够指定一个合成名称,该名称不在我序列化/反序列化的类中,它将被插入到JSON表示中并用于标识类型。

2 个答案:

答案 0 :(得分:3)

如果混合不符合您的喜好,则没有任何预定义可以通过,但您可以通过对JacksonAnnotationIntrospector进行子分类并使用它配置mapper来相对轻松地实现此目的。

在您的实现中,您可以覆盖注释访问的所有方面:在您的情况下,它可能足以覆盖findTypeResolver()(如果您想要每个属性覆盖,'findPropertyTypeResolver()')。 然后,该方法可以使用您想要构造TypeResolverBuilder(最有可能StdTypeResolverBuilder)的任何机制,其中包含与@JsonTypeInfo注释通常来的相同的信息。

答案 1 :(得分:0)

对于任何寻找多态json解组问题的人,你应该看看this post,它提供了很好的例子和& JSON序列化/反序列化警告的变通办法。

如果 mixins (上面提到的post的第5步)并不是你想要的,那就去找 StaxMan 接受的答案了。