我为特定字段编写了一个 CustomSerializer。我在具有某些配置的 ObjectMapper
上调用自定义序列化程序,例如 WRAP_ROOT_VALUE
、PropertyNameStrategy
、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
的一个(或部分)属性???
最佳答案
获取ObjectMapper
来自自定义 JsonSerializer
, 你可以得到 ObjectMapper
使用:
ObjectMapper mapper = ((ObjectMapper) jgen.getCodec());
设置ObjectMapper
您还可以定义一个新的 ObjectMapper
在您的自定义范围内 JsonSerializer
使用:
ObjectMapper mapper = new ObjectMapper();
jgen.setCodec(mapper);
关于java - 在自定义序列化程序 jackson 中配置 objectmapper?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38896345/