springboot项目接口给null给前端返回空字符串。

代码:

@Configuration
public class JacksonConfig {
          
   
    @Bean
    public MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverter() {
          
   
        MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverter = new MappingJackson2HttpMessageConverter();
        List<MediaType> supported = new ArrayList<>();
        supported.add(MediaType.APPLICATION_JSON_UTF8);
        mappingJackson2HttpMessageConverter.setSupportedMediaTypes(supported);
        ObjectMapper objectMapper = new ObjectMapper();
        // null值的处理,必须要放在第一步,否则会将下面的日期格式化覆盖掉
        // null ==> ""
        objectMapper.getSerializerProvider().setNullValueSerializer(new JsonSerializer<Object>() {
          
   
            @Override
            public void serialize(Object value, JsonGenerator gen, SerializerProvider serializers) throws IOException {
          
   
                gen.writeString("");
            }
        });
        // 处理默认日期格式化:yyyy-MM-dd HH:mm:ss
        objectMapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);
        objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
        objectMapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd"));
        mappingJackson2HttpMessageConverter.setObjectMapper(objectMapper);
        return mappingJackson2HttpMessageConverter;
    }
}

这种写法是正确的,还有种写法是返回objectMapper是无效的.打断点调试了,运行的时候,根本不会进来。

经验分享 程序员 微信小程序 职场和发展