@JsonSerialize使用方法

举个🌰,比如一张表中的时间,数据库中存储的是yyy-mm-dd hh:mm:ss 这样的形式,而前段需要的是精确到秒的格式,那我们不可能直接把这种格式的数据直接返回给前端吧?!

除了使用自定义工具类,还有一种方法更直接,那就是使用@JsonSerialize(com.fasterxml.jackson.databind.annotation.JsonSerialize)注解。

使用步骤:

  1. 在实体类中在要转换的字段上加上该注解,如下:
    1
    2
    3
     /** 订单创建时间 */
    @JsonSerialize(using = DateToLongSerializer.class)
    private Date createTiem;
  2. 并指定一个格式化的类。如下:
    1
    2
    3
    4
    5
    6
    7
    public class DateToLongSerializer extends JsonSerializer<Date> {

    @Override
    public void serialize(Date date, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
    jsonGenerator.writeNumber(date.getTime() / 1000);
    }
    }
  3. 数据库中的格式
  4. 转换之后的格式