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项目:
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.12.6</version>
</dependency>
情况二: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