2013-07-25 41 views
0

我与杰克逊2和CXF工作。建设ObjectWriter的具体实例忽略空字段

我已经做了很多的研究,以找到一个干净,安全的方式来获得所给予CXF的UN/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() ; 
} 

如果用例验证我已成功禁用SerializationFeature.WRITE_NULL_MAP_VALUES。 然而,结果仍然是包括空字段。

回答

0

我使用的是旧版本的杰克逊,但这对我的作品:

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字符串。

+0

从地图对象...哦~~,我完全忽略了这一部分。但是,我需要引用共享映射器对象,它读取注释...... humn,我希望有一个util方法来克隆共享对象映射器,然后我可以配置该克隆:D。非常感谢 – dangan249