@JsonFormat的通常出现在javaBean中的属性上,用来表示json序列化的一种格式或者类型。比如:
@JsonFormat(shape =JsonFormat.Shape.STRING,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>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.9.2</version> </dependency>引入以上的pmaven依赖之后,就可以在实体类属性上面使用@JsonFormat注解了,要注意的是,它只会在声明返回类型为json时,比如使用@ResponseBody返回json数据的时候,才会返回格式化的yyyy-MM-dd HH:mm:ss时间,如果直接使用System.out.println()输出的话,仍然是类似“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可以使代码更加简洁,因为它可以减少很多不必要的类型转换。