如何在Spring应用程序中注册自定义杰克逊过滤器?

gst*_*low 6 java spring json spring-mvc jackson

我已阅读以下问题:

/sf/answers/1792662581/

我有 spring-mvc 应用程序。如果我用注释来注释控制器方法@ResponseBody并在方法内返回对象,那么服务器会将 json 提供给客户端。我的类路径中有杰克逊。

在提到的示例中编写了以下代码

ObjectMapper mapper = new ObjectMapper();
mapper.setFilters(new SimpleFilterProvider().addFilter("filter", new ExcludeIdFilter()));
Run Code Online (Sandbox Code Playgroud)

据我了解,这段代码已经写在 spring 内部的某个地方......

请说明如何注册自定义杰克逊过滤器?

Bri*_*zel 3

您可以像这样配置自己的实例MappingJackson2HttpMessageConverter

@Configuration
public class WebConfig extends WebMvcConfigurerAdapter {

  @Override
  public void extendMessageConverters(List<HttpMessageConverter<?>> converters) {

    ObjectMapper mapper = Jackson2ObjectMapperBuilder().json()
       .filters(new SimpleFilterProvider().addFilter("filter", new ExcludeIdFilter()));

    MappingJackson2HttpMessageConverter converter = 
        new MappingJackson2HttpMessageConverter(mapper);

    // then replace the default MappingJackson2HttpMessageConverter
    // with your custom one in the list of configured converters
  }

}
Run Code Online (Sandbox Code Playgroud)