[英]Jackson JSON Filter without @JsonFilter Annotation
我正在嘗試使用Jackson庫過濾API端點的響應。
我可以使用@JsonFilter(“[filterNameHere]”),但最終會有一個類,希望每次都能應用過濾器。
有沒有辦法只能在一個特定的實例上過濾響應?
Pizza pizza = pizzaService.getPizzaById(pizzaId);
ObjectMapper mapper = new ObjectMapper();
FilterProvider filters = new SimpleFilterProvider().addFilter("baseFilter", SimpleBeanPropertyFilter.serializeAllExcept("base"));
String json = mapper.writer(filters).writeValueAsString(pizza);
return Response.status(200).entity(json).build();
我試過環顧四周但卻找不到合適的東西。
不幸的是,filter id和class之間的關聯是靜態的,所以任何類都有或沒有; 也就是說,有時你不能使用過濾器,有時則不能。
但是,應該可以:
SimpleFilterProvider.setDefaultFilter()
),以便在沒有明確注冊的過濾器匹配id時使用。 這個過濾器基本上可以是“包括所有”過濾器,這對處理沒有影響。 SimpleFilterProvider.setFailOnUnknownId(false)
(在提供者實例上) 所以我認為你真正想做的是第二種選擇,例如:
SimpleFilterProvider filters = new SimpleFilterProvider();
filters.setFailOnUnknownId(false);
String json = mapper.writer(filters).writeValueAsString(pizza);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.