如何使用@JsonFormat

  @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依赖如下:


    com.fasterxml.jackson.core
    jackson-databind
    2.9.2

     引入以上的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可以使代码更加简洁,因为它可以减少很多不必要的类型转换。

 

你可能感兴趣的:(Java基础,java,@JsonFormat,注解)