- 由于
spring.jackson.default-property-inclusion
配置失效,所以得自定义文本转换器
-
废话不多说上代码
@Configuration @EnableWebMvc public class WebAppConfig implements WebMvcConfigurer { /** * 添加到消息转换器 * @param converters */ @Override public void configureMessageConverters(List <HttpMessageConverter <?>> converters) { //如果放在jacson下面会出现字符串多一个的问题 converters.add(stringHttpMessageConverter()); converters.add(jackson2HttpMessageConverter()); } /** * 处理返回json格式 * 定义时间格式转换器 * @return MappingJackson2HttpMessageConverter */ @Bean public MappingJackson2HttpMessageConverter jackson2HttpMessageConverter() { MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter(); ObjectMapper mapper = new ObjectMapper(); mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); //主要是这句处理 mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL); //时间格式化 mapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")); converter.setObjectMapper(mapper); List <MediaType> list = Arrays.asList( MediaType.APPLICATION_JSON, MediaType.ALL);//防止spring boot admin报错(No converter for [class org.springframework.boot.actuate.health.Sy stemHealth] with preset Content-Type 'null') converter.setSupportedMediaTypes(list); return converter; } //或者这样 @Bean public MappingJackson2HttpMessageConverter jackson2HttpMessageConverter() { ObjectMapper mapper = new ObjectMapper(); mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); //主要是这句处理 mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL); //时间格式化 mapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")); MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter(mapper); return converter; } @Bean public StringHttpMessageConverter stringHttpMessageConverter() { return new StringHttpMessageConverter(); }
以上能解决null字段不返回,并且字符串不会有两个双引号
spring cloud jackson自定义文本转换器
最新推荐文章于 2024-04-30 11:13:42 发布