spring boot处理请求返回值的格式(自定义消息转换器)

springboot 将对象转化成json对象返回给前端,是通过多个消息转换器配合完成的

但是有些时候,默认的转化格式未必符合我们的要求,这个时候就需要进行自定义消息转换器

只需要在@Configuration的类中添加消息转化器的@bean加入到Spring容器,就会在spring启动时被Spring Boot自动加入到容器中。

框架在对消息进行转换时就不会使用默认的转换器,而是使用咱们提供的bean进行处理

需要注意的是,一个转换器只有一个bean会起作用,当转换器重复加到容器中时,只有第一个会起作用

 

@Bean
    public MappingJackson2HttpMessageConverter longToStringConverter() {
        MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter();
        ObjectMapper mapper = new ObjectMapper();
        //Long 转String
        SimpleModule simpleModule = new SimpleModule();
        simpleModule.addSerializer(Long.class, ToStringSerializer.instance);
        simpleModule.addSerializer(Long.TYPE, ToStringSerializer.instance);
        mapper.registerModule(simpleModule);
        //Date格式
        mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
        mapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"));    
        
        converter.setObjectMapper(mapper);
        return converter;
    }

 

这是一个示例, 会将对象中的Long类型转换成String返回,同时返回规定格式的日期

如果要对返回消息的编码格式做处理,就需要用到另外一个转换器

 

如果某个字段不想返回,再对象属性上面加上@JsonIgnore即可

 

 

除了这种方式,还可以在继承WebMvcConfigurerAdapter的类中重写(覆盖)configureMessageConverters方法,也能实现这种效果

 

posted @ 2019-07-04 17:38  CheerwayRen  阅读(3514)  评论(0编辑  收藏  举报