1

我正在与杰克逊 2 和 CXF 合作。

我进行了大量研究,以找到一种干净且安全的方法来从共享对象映射器中获取写入器对象,该映射器提供给 CXF 用于取消/编组 JSON。由于某些业务逻辑,我不能只使用注释或将映射器对象设置为在序列化时忽略空字段。

下面的代码似乎很正确,但是输出的 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 案例验证我已成功禁用 SerializationFeature.WRITE_NULL_MAP_VALUES。但是,结果仍然是包含空字段。

4

1 回答 1

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生成 JSON 字符串。Map

于 2013-07-25T18:10:45.220 回答