在Custom serializer jackson中配置objectmapper?

时间:2016-08-11 12:25:07

标签: java json serialization jackson objectmapper

我为写入的特定字段设置了CustomSerializer。我使用ObjectMapperWRAP_ROOT_VALUEPropertyNameStrategy等特定配置在Inclusion.NON_NULL上调用自定义序列化程序。

现在在我的自定义序列化程序中,我希望在序列化我的自定义类时除了一个(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的单个(或某些)属性

1 个答案:

答案 0 :(得分:6)

获取ObjectMapper

在自定义JsonSerializer中,您可以使用以下内容获取ObjectMapper

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

设置ObjectMapper

您还可以使用以下内容在自定义ObjectMapper中定义新的JsonSerializer

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