在自定义序列化程序 jackson 中配置 objectmapper?

Configure objectmapper inside Custom serializer jackson?

我为特定字段编写了 CustomSerializer。我使用 WRAP_ROOT_VALUEPropertyNameStrategyInclusion.NON_NULL.

等某些配置在 ObjectMapper 上调用自定义序列化程序

现在在我的自定义序列化程序中,我需要所有这些属性,同时序列化我的自定义 class 除了一个 (WRAP_ROOT_VALUE)。

public class CustomSerializer extends JsonSerializer<Object>{

    @Override
    public void serialize(Object obj, JsonGenerator jgen,
            SerializerProvider arg2) throws IOException,
            JsonProcessingException {
//.......
        jgen.writeObject(obj);
//...       
    }

所以我的 obj 在这里被序列化为我不想要的根值包装。

出于某种原因我无法编辑我的 POJO。

如何在 CustomSerializer 中仅禁用 Objectmapper 中的一个(或部分)属性???

获取 ObjectMapper

在自定义 JsonSerializer, you can get the ObjectMapper 中使用:

ObjectMapper mapper = ((ObjectMapper) jgen.getCodec());

设置 ObjectMapper

您还可以定义一个新的 ObjectMapper within your custom JsonSerializer 使用:

ObjectMapper mapper = new ObjectMapper();
jgen.setCodec(mapper);