我为写入的特定字段设置了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
的单个(或某些)属性
答案 0 :(得分:6)
ObjectMapper
在自定义JsonSerializer
中,您可以使用以下内容获取ObjectMapper
:
ObjectMapper mapper = ((ObjectMapper) jgen.getCodec());
ObjectMapper
您还可以使用以下内容在自定义ObjectMapper
中定义新的JsonSerializer
ObjectMapper mapper = new ObjectMapper();
jgen.setCodec(mapper);