Jackson自定义JSonserializer-有条件调用默认序列化器



我想要的是有条件地使用默认的beanserializer为我的班级对象:

class MyCustomSerializer extends StdSerializer<AbstractEntity> {
    public MyCustomSerializer() {
        super(AbstractEntity.class);
    }
    @Override
    public void serialize(AbstractEntity o, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
        if (someCondition()) {
           serializeNormalWay(); //how?
        } else {
           //custom serialization
        }
    }
}

我试图做这样的事情:

serializerProvider.defaultSerializeValue(o, jsonGenerator);

,但这称为mycustomerializer的方法,我有永无止境的递归。如何获得可以用于普通豆序列化的适当序列化对象?

这需要更复杂的设置:您需要让杰克逊创建一个,然后接管。这可以通过注册BeanSerializerModifier(通过Module),方法modifySerializer(...)来完成。将为您提供将要使用的默认序列化器,并且可以构造自定义一个,传递该默认一个。

相关内容

  • 没有找到相关文章

最新更新