1、 要是只过滤某个VO对象上加上注解,即在该对象上加上该注
@JsonInclude(JsonInclude.Include.NON_NULL)
2、在application.properties中添加
spring.jackson.default-property-inclusion=non_null
(注意如果在项目中有实现、继承以下接口、类,代表 那么这个默认配置就无效,因为你已经接替了springboot的自动化配置),
使用@EnableWebMvc这样的注解也会导致失效,因为他引入了DelegatingWebMvcConfiguration 这个类,而这个类又继承了WebMvcConfigurationSupport
@Retention(RetentionPolicy.RUNTIME) @Target({ElementType.TYPE}) @Documented @Import({DelegatingWebMvcConfiguration.class}) public @interface EnableWebMvc { }
public class DelegatingWebMvcConfiguration extends WebMvcConfigurationSupport {
在这里建议直接重写configureMessageConverters,这样可以统一处理返回null的问题
@Configuration public class InterceptorAdapter extends WebMvcConfig { //注册拦截器2 @Override public void addInterceptors(InterceptorRegistry registry) { } @Override public void addArgumentResolvers(List<HandlerMethodArgumentResolver> argumentResolvers) { super.addArgumentResolvers(argumentResolvers); argumentResolvers.add(new CurrentUserResolver()); argumentResolvers.add(new CurrentCompanyResolver()); // 分页不做处理,默认 PageableHandlerMethodArgumentResolver resolver = new PageableHandlerMethodArgumentResolver(); resolver.setOneIndexedParameters(false); argumentResolvers.add(resolver); } @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { // registry.addResourceHandler("/statics/**").addResourceLocations("classpath:/statics/"); // 解决 SWAGGER 404报错 registry.addResourceHandler("/swagger-ui.html").addResourceLocations("classpath:/META-INF/resources/"); registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/"); } @Bean public MappingJackson2HttpMessageConverter customJackson2HttpMessageConverter() { MappingJackson2HttpMessageConverter jsonConverter = new MappingJackson2HttpMessageConverter(); ObjectMapper objectMapper = new ObjectMapper(); // 去除null object objectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL); // 字段不存在时不报异常 objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); jsonConverter.setObjectMapper(objectMapper); return jsonConverter; } @Bean public Jackson2ObjectMapperBuilder customObjectMapper() { Jackson2ObjectMapperBuilder mapper = new Jackson2ObjectMapperBuilder(); mapper.serializationInclusion(JsonInclude.Include.NON_NULL); return mapper; } @Override public void configureMessageConverters(List<HttpMessageConverter<?>> converters) { MappingJackson2HttpMessageConverter jackson2HttpMessageConverter = new MappingJackson2HttpMessageConverter(); ObjectMapper objectMapper = new ObjectMapper(); /* long统一换成string */ SimpleModule simpleModule = new SimpleModule(); simpleModule.addSerializer(Long.class, ToStringSerializer.instance); simpleModule.addSerializer(Long.TYPE, ToStringSerializer.instance); objectMapper.registerModule(simpleModule); jackson2HttpMessageConverter.setObjectMapper(objectMapper); converters.add(customJackson2HttpMessageConverter()); } }