2013-07-25 39 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