【发布时间】:2014-07-29 12:32:30
【问题描述】:
如果您事先知道类型,编写自定义序列化程序非常容易。例如。 MyType 可以写一个MyTypeSerializer extends StdSerializer<MyType>。见http://wiki.fasterxml.com/JacksonHowToCustomSerializers
但是,让我们这么说:
- 我有几种类型的对象(接口)通过 Jackson 序列化。
- 我事先不知道这些对象的类型。
- 我无法在这些类型上添加注释。
- 所有这些对象都可以转换为我知道的通用类型,以便我可以获取其状态数据,该类型不是其接口的一部分。
这意味着我需要编写一个序列化程序来处理所有类型(“catch-all”)并且可以决定它是否支持它(4.)。我天真地尝试了CatchAllSerializer extends StdSerializer<Object>,但它根本没有被触发。
如何编写/注册一个可以捕获所有类型的序列化程序,以确定它是否支持给定类型并提供序列化机制?
【问题讨论】:
-
我用
ObjectMapper().writeValueAsString()。 -
@OldCurmudgeon 这会触发默认的 Jackson 序列化,但问题是关于触发自定义序列化程序。
标签: java json serialization jackson