2016-12-23 56 views
0

我一直在使用codehaus和下面的代碼來排除序列化JSON時的字段。Fasterxml ObjectMapper不排除JSON中的文件

ObjectMapper mapper = new ObjectMapper(); 
mapper.getSerializationConfig().addMixInAnnotations(Object.class, PropertyFilterMixIn.class); 

SimpleBeanPropertyFilter propertyFilter = SimpleBeanPropertyFilter.serializeAllExcept(ignoreFieldNames); 
FilterProvider simpleFilterProvider = new SimpleFilterProvider().addFilter("PropertyFilter", propertyFilter); 

ObjectWriter writer = mapper.writer(simpleFilterProvider); 
String jsonContent = writer.writeValueAsString(obj); 

我升級到fasterxml和改變了代碼如下,

ObjectMapper mapper = new ObjectMapper(); 
mapper.addMixIn(Object.class, PropertyFilterMixIn.class); 

SimpleBeanPropertyFilter propertyFilter = SimpleBeanPropertyFilter.serializeAllExcept(ignoreFieldNames); 
FilterProvider simpleFilterProvider = new SimpleFilterProvider().addFilter("PropertyFilter", propertyFilter); 
//mapper.getSerializationConfig().withFilters(simpleFilterProvider); 

ObjectWriter writer = mapper.writer(simpleFilterProvider); 
String jsonContent = writer.writeValueAsString(obj); 

然而,上面的代碼並不如預期的工作。它不尊重所有的ignoreFieldNames,只是返回的對象中的所有字段(不排除在「ignoreFieldNames」中提到的字段(字符串數組)。

任何幫助將不勝感激。在

謝謝提前。

回答

0

你需要與你的過濾器來註釋豆

@JsonFilter("PropertyFilter") 
public class ClassImSerializing 

或者如果你不能,你可以在它添加附註作爲全球混合

ObjectMapper mapper = new ObjectMapper(); 
mapper.addMixIn(Object.class, PropertyFilterMixIn.class); 

@JsonFilter("PropertyFilter") 
class PropertyFilterMixIn { 

} 
+0

感謝您的回覆。 – KingKari

+0

感謝您的回覆。我嘗試了全局mixin註釋,但它不起作用。我嘗試了註解方法(@JsonFilter(「PropertyFilter」)),它可以工作,但它不會排除層次結構中的字段,但是早先使用codehaus時,它將深層次地刪除字段中的字段。 – KingKari

+0

org.springframework.http.converter.HttpMessageNotWritableException:我試圖將註釋添加到子實體類中,但是出現以下錯誤。 無法寫入內容:無法使用ID「PropertyFilter」解析PropertyFilter;沒有配置FilterProvider;嵌套的異常是com.fasterxml.jackson.databind.JsonMappingException:無法使用ID「PropertyFilter」解析PropertyFilter;沒有配置FilterProvider – KingKari

相關問題