从Jackson 2中的共享ObjectMapper构造ObjectWriter的特定实例,以忽略空字段

时间:2013-07-25 15:21:13

标签: java data-binding cxf jackson fasterxml

我正在与Jackson 2和CXF合作。

我已经做了很多研究,以找到一种干净而安全的方法,从共享对象映射器中获取一个编写器对象,该映射器被提供给CXF用于取消/封送JSON。由于某些业务逻辑,我不能只使用注释或将mapper对象设置为在序列化时忽略空字段。

下面的代码似乎非常正确,但输出JSON仍然包含空字段。请帮忙 !!

ObjectWriter  writer = this.jacksonMapper.writer().without(  SerializationFeature.WRITE_NULL_MAP_VALUES ) ;            
if( writer.isEnabled( SerializationFeature.WRITE_NULL_MAP_VALUES  ) )      {
   System.out.println("Oppa gangname style");
}
String json = null;
try {
   json = writer.writeValueAsString( myObject );
   System.out.println ( json ) ;
} catch (JsonProcessingException e) {
   throw new RuntimeException() ;
}

if if case验证我是否成功禁用了SerializationFeature.WRITE_NULL_MAP_VALUES。 但是,结果仍然包括空字段。

1 个答案:

答案 0 :(得分:0)

我使用的是较旧的Jackson版本,但这对我有用:

JsonFactory factory = new JsonFactory();
ObjectMapper mapper = new ObjectMapper(factory);
mapper.setSerializationInclusion(Inclusion.NON_NULL);
return mapper.writeValueAsString(input);

文档说SerializationFeature.WRITE_NULL_MAP_VALUES仅适用于从Map个对象生成JSON字符串。