@JsonFormat的通常出现在javaBean中的属性上,用来表示json序列化的一种格式或者类型。比如:
@JsonFormat(shape =,pattern ="yyyy-MM-dd HH:mm:ss",timezone ="GMT+8")
private Date createTime;
@JsonFormat注解是一个时间格式化注解,比如我们存储在mysql中的数据是date类型的,当我们读取出来封装在实体类中的时候,就会变成英文时间格式,而不是yyyy-MM-dd HH:mm:ss这样的中文时间,因此我们需要用到JsonFormat注解来格式化我们的时间。
使用@JsonFormat注解需要引入maven依赖如下:
<dependency>
<groupId></groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.2</version>
</dependency>
引入以上的pmaven依赖之后,就可以在实体类属性上面使用@JsonFormat注解了,要注意的是,它只会在声明返回类型为json时,比如使用@ResponseBody返回json数据的时候,才会返回格式化的yyyy-MM-dd HH:mm:ss时间,如果直接使用()输出的话,仍然是类似“Fri Dec 01 21:05:20 CST 2017”这样的时间样式。
@JsonFormat有以下几个属性,了解它的属性含义可以使我们更好的使用这个注解。
shap: 表示序列化后的一种类型。shap在源码中是枚举类型,有如下几个属性值,代表不同的类型:
public static enum Shape {
ANY,
NATURAL,
SCALAR,
ARRAY,
OBJECT,
NUMBER,
NUMBER_FLOAT,
NUMBER_INT,
STRING,
BOOLEAN;
private Shape() {
}
public boolean isNumeric() {
return this == NUMBER || this == NUMBER_INT || this == NUMBER_FLOAT;
}
public boolean isStructured() {
return this == OBJECT || this == ARRAY;
}
}
pattern: 表示日期的格式
timezone: 默认是GMT,中国需要GMT+8
locale: 根据位置序列化的一种格式
恰当的使用@JsonFormat可以使代码更加简洁,因为它可以减少很多不必要的类型转换。