gpt4 book ai didi

java - 没有 @JsonFilter 注解的 Jackson JSON 过滤器

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:27:33 27 4
gpt4 key购买 nike

我正在尝试使用 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();

我试过环顾四周,但没能找到合适的东西。

最佳答案

不幸的是,过滤器 ID 和类之间的关联是静态的,因此任何类要么有它,要么没有;也就是说,您有时不能有过滤器,有时不能。

但是应该可以:

  • 指示要使用的“默认”过滤器(使用 SimpleFilterProvider.setDefaultFilter()),以防没有与 id 匹配的显式注册过滤器。此过滤器基本上可以是“包括所有”过滤器,这对处理没有影响。
  • 表示如果找不到过滤器 ID 的匹配项,则不进行任何过滤:SimpleFilterProvider.setFailOnUnknownId(false)(在提供程序实例上)

所以我认为您真正想做的是第二种选择,例如:

SimpleFilterProvider filters = new SimpleFilterProvider();
filters.setFailOnUnknownId(false);
String json = mapper.writer(filters).writeValueAsString(pizza);

关于java - 没有 @JsonFilter 注解的 Jackson JSON 过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27511738/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com