【发布时间】:2015-04-25 07:10:08
【问题描述】:
一些接口,如ResolvableSerializer 和ContextualSerializer,会修改Jackson 处理JsonSerializer 的方式。
还有其他这样的接口吗?
Jackson 是否曾针对 JsonSerializer 的子类(例如 StdSerializer、BeanSerializerBase 或 BeanSerializer)修改其行为? (当然,除了通过标准多态性;我说的是instanceof 或Class.isAssignableFrom() 等)
在我编写的BeanSerializerModifier 的子类中的modifySerializer 的实现中,我返回一个包装了参数JsonSerializer 的JsonSerializer 的子类。这个包装器只覆盖了两个方法:
-
serialize: 只有满足特定条件才会在封装的序列化器上调用序列化 -
getDelegatee:返回包装好的序列化器
问题:
- 我的包装器是否应该扩展
JsonSerializer的某个子类而不仅仅是JsonSerializer?- 如果是,子类是否应该依赖于封装的序列化器的类?
- 我的包装器是否应该重载任何其他方法?
- 我的包装器是否应该实现与包装的序列化器相同的序列化器修饰符接口?如果是这样,那么有两个问题:
- 我必须了解每个修饰符界面,并更新我的
BeanSerializerModifier以处理添加到 Jackson 的任何新界面 - 我需要为每个修饰符接口的组合有一个不同的包装类,这很麻烦
- 我必须了解每个修饰符界面,并更新我的
【问题讨论】:
标签: jackson