项目中使用JsonSerializer将JavaBean中Date毫秒级转秒级的简便方法

来源:互联网 发布:数据库表的设计 编辑:程序博客网 时间:2024/05/01 06:11

此项目是基于SpringBoot实现的,我的JavaBean中有两个Date属性,如下

private Date createTime; private Date updateTime;


我通过crud(增删改查)操作返回的是毫秒级别的,但我前端只需要精确到秒级,常规方法是创建一个VO对象,把createTime和updateTime的类型改成Long或者Integer,然后把原来的Date类型转化成Long或者Integer,这种方法很繁琐,增加了很多代码,而且看起来很low,这里提出一个稍微高大上一点的方法:


import com.fasterxml.jackson.core.JsonGenerator;import com.fasterxml.jackson.core.JsonProcessingException;import com.fasterxml.jackson.databind.JsonSerializer;import com.fasterxml.jackson.databind.SerializerProvider;import java.io.IOException;import java.util.Date;public class Date2LongSerializer extends JsonSerializer<Date>{    @Override    public void serialize(Date date, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException, JsonProcessingException {        jsonGenerator.writeNumber(date.getTime() / 1000);    }}

这里创建了一个Date2LongSerializer的类,然后在JavaBean中添加注解:

    /**创建时间*/    @JsonSerialize(using = Date2LongSerializer.class)//本来是毫秒级的,转换成秒级    private Date createTime;    /**更新时间*/    @JsonSerialize(using = Date2LongSerializer.class)//本来是毫秒级的,转换成秒级    private Date updateTime;

这样你获取到的这两个字段就自动转化成秒级了,是不是很简单!!!