我正在与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。 但是,结果仍然包括空字段。
答案 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字符串。