在自定义序列化程序 jackson 中配置 objectmapper?
Configure objectmapper inside Custom serializer jackson?
我为特定字段编写了 CustomSerializer。我使用 WRAP_ROOT_VALUE
、PropertyNameStrategy
、Inclusion.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);
我为特定字段编写了 CustomSerializer。我使用 WRAP_ROOT_VALUE
、PropertyNameStrategy
、Inclusion.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);