我正在尝试使用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();
Run Code Online (Sandbox Code Playgroud)
我试过环顾四周但却找不到合适的东西.
不幸的是,filter id和class之间的关联是静态的,所以任何类都有或没有; 也就是说,有时你不能使用过滤器,有时则不能.
但是,应该可以:
SimpleFilterProvider.setDefaultFilter())的"默认"过滤器,以便在没有与id匹配的显式注册过滤器的情况下使用.这个过滤器基本上可以是"包括所有"过滤器,这对处理没有影响.SimpleFilterProvider.setFailOnUnknownId(false)在提供者实例上)所以我认为你真正想做的是第二种选择,例如:
SimpleFilterProvider filters = new SimpleFilterProvider();
filters.setFailOnUnknownId(false);
String json = mapper.writer(filters).writeValueAsString(pizza);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7733 次 |
| 最近记录: |