在springboot工程中统一处理响应对象的时间格式

雨燕双飞 提交于 2021-02-01 18:53:00

一、背景

       工程为springboot框架,现需要统一将服务端接口返回数据内的时间格式定为"yyyyMMdd HH:mm:ss"。

二、方法一

        在bean上面添加注解@JsonFormat,指定数据格式,代码如下:

@NoArgsConstructor
@Data
public class Article {

    /**
     * id : 1
     * author : xxx
     * title : dddd
     * content : sss
     * createTime : ssss
     * reader : [{"name":"ss","age":11}]
     */

    private int id;
    private String author;
    private String title;
    private String content;
    private String createTime;
    private List<ReaderBean> reader;

    @JsonFormat(pattern="yyyyMMdd HH:mm:ss")
    private Date date;

    @NoArgsConstructor
    @Data
    public static class ReaderBean {
        /**
         * name : ss
         * age : 11
         */

        private String name;
        private int age;
    }
}

    这样做的弊端就是需要给每个bean都添加注解@JsonFormat,无法统一处理,也不具备灵活性,如果后续要修改格式为"yyyyMMdd",需要再对每个bean进行修改。

三、方法二

    springboot框架支持自定义消息转换器,可对数据格式做统一处理,代码如下:

@Configuration
public class CustomMessageConverter {

    @Bean
    public MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverter() {
        ObjectMapper objectMapper = new ObjectMapper();
        objectMapper.setDateFormat(new SimpleDateFormat("yyyyMMdd HH:mm:ss"));
        return new MappingJackson2HttpMessageConverter(objectMapper);
    }
}

    在上述的代码中,我们自定义了mappingJackson2HttpMessageConverter对象的创建,通过设置ObjectMapper对象的setDateFormat方法,完成了统一的时间格式的转换。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!