@JsonFormat 注解的使用

SpringBoot 中的 @JsonFormat 注解

    • 1. 引言
    • 2. 简介
    • 3. 使用
      • ①引入依赖
      • ②添加注解

        1. 引言

        在前后端交互过程当中,往往需要后端返回前端所需要的日期类型数据,所以在将数据返回给前端时,可能会需要对日期类型进行格式化;

        为更便捷的返回需要的数据,可以用 @JsonFormat 注解,其作用就是把DATE类型的数据转化成为我们想要的格式。

        2. 简介

        @JsonFormat 是Jackson中定义的一个注解,可以在数据返回前端时进行格式化;

        例如前端需要的字符串格式的日期:“2023年10月31日 18时22分22秒”,则需要如下配置:

        @JsonFormat(pattern = “yyyy年MM月dd日 HH时mm分ss秒”)
        private Date createTime;
        

        解析后存入DB中的依然为:2022-10-31 18:22:22,而在查询时返回的数据就会被格式化为:“2023年10月31日 18时22分22秒”

        注意:只有在将实体返回JSON格式数据时才会转换格式,其他时候日期格式不会被转换!

        3. 使用

        ①引入依赖

        @JsonFormat 注解不是SPRING自带的注解,而是Jackson的注解,所以需要在Maven中导入jackson相关的依赖包;

        情况一:非SpringBoot项目:

         com.fasterxml.jackson.core jackson-databind 2.12.6

        情况二:SpringBoot项目:

        spring-boot-start-web下已经包了Jackson的相关依赖,不需要再添加依赖!

        ②添加注解

        在实体类中的属性上面使用 @JsonFormat 注解;

        情况一:时间类型为 LocalTime 或 LocalDataTime:

        只需要在属性上方定义时间类型即可;

        @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
        private LocalTime createTime;
        @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
        private LocalDateTime createTime;
        

        情况二:时间类型 Data:

        在使用 Data 类型时,由于Jaskson格式化时是按照国际标准时间GMT的,而国内是CST时区,两者相差8h,所以需要手动指定时区;

         @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
            private Date createTime;
        

        参考:

        https://blog.csdn.net/goodjava2007/article/details/126028371

        https://www.cnblogs.com/Marydon20170307/p/17750947.html