某些界面,例如ResolvableSerializer
& ContextualSerializer
,修改杰克逊处理JsonSerializer
的方式。
还有其他类似的接口吗?
Jackson是否曾修改JsonSerializer
的子类的行为,例如StdSerializer
,BeanSerializerBase
或BeanSerializer
? (当然,除了通过标准多态性之外;我说的是instanceof
或Class.isAssignableFrom()
之类的东西。)
在我编写的modifySerializer
子类中的BeanSerializerModifier
的实现中,我返回了包含参数JsonSerializer
的{{1}}的子类。此包装器仅覆盖两种方法:
JsonSerializer
:仅当满足某些条件时才会在包装的序列化程序上调用序列化serialize
:返回包装的序列化程序问题:
getDelegatee
的某些子类而不仅仅是JsonSerializer
吗?
JsonSerializer
以处理添加到杰克逊的任何新修饰答案 0 :(得分:1)
好问题。以下是一些想法:
StdSerializer
而不是" raw" JsonSerializer
。StdScalarSerializer
Collection
或Map
序列化程序,您可能希望这样做 - 但是,通常,您应该需要匹配。你正确地注意到它会很快变得不切实际。isEmpty()
,如果存在与" empty"的概念相关的非空值:例如,String""被认为是空的。acceptJsonFormatVisitor()
是支持JSON Schema生成和其他类型内省(如使用匹配的数据格式模块生成Avro,CSV和Protobuf模式)所必需的。