如何在自定义序列化程序中访问默认的 jackson 序列化
我想创建一个自定义序列化程序,它做一点点工作,然后把其余的留给默认序列化。
例如:
@JsonSerialize(using = MyClassSerializer.class)
public class MyClass {
...
}
public class MyClassSerializer extends JsonSerializer<MyClass> {
@Override
public void serialize(MyClass myClass, JsonGenerator generator,
SerializerProvider provider)
throws JsonGenerationException, IOException {
if (myClass.getSomeProperty() == someCalculationResult) {
provider.setAttribute("special", true);
}
generator.writeObject(myClass);
}
}
其想法是为聚合对象创建其他自定义序列化程序,这些对象的行为基于“特殊”属性值而有所不同。但是,上面的代码不起作用,因为它不出所料地进入了无限递归。
有没有办法告诉我,一旦我设置了属性,杰克逊就使用默认序列化?我真的不想像许多自定义序列化程序那样枚举所有属性,因为该类相当复杂,我不想在每次更改类时都必须对序列化程序进行双重维护。