Jackson支持多态,无需注释和专用bean字段



是否有一种方法来执行序列化/反序列化的多态类的杰克逊w/out使用注释或专门的bean字段?我必须支持我不能修改的类层次结构,并且不希望使用注释。

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

如果您不喜欢mix-in,则没有任何预定义的内容要传递,但是您可以通过子类化JacksonAnnotationIntrospector并使用它配置mapper来相对容易地实现这一点。

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

对于任何寻找多态json解组问题的人,你应该看看这篇文章,它给出了很好的例子&JSON序列化/反序列化警告的解决方法。

如果mixins(上面提到的第5步)不是你想要的,那就去找StaxMan的公认答案。

最新更新