背景
今天在寫項目的時候遇到一個問題,項目中有個類中有創建時間和更新時間兩個屬性,但是單位在后端用的是Date,而前端給的API中用的是秒。這就涉及到單位的轉換問題。但是如何優雅地對單位進行轉化呢?
演示


解決方法
利用@JsonSerialize注解,可以方便地實現將date數據轉換成long型數據等功能,該注解作用在屬性的getter()方法上。
1. 寫一個負責轉換的類,繼承自JsonSerializer類,里面寫好規則
public class Date2LongSerializer extends JsonSerializer<Date> {
@Override
public void serialize(Date date, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {//把Date轉成Long
jsonGenerator.writeNumber(date.getTime() / 1000);
}
}
2. 在返回的參數里加上注解@JsonSerialize(using = XXX.class) XXX為上一步新建的轉換類
//創建時間
@JsonSerialize(using = Date2LongSerializer.class)//時間戳將Date轉成Long
private Date categoryTime;
//修改時間
@JsonSerialize(using = Date2LongSerializer.class)
private Date updateTime;
這樣就完成了時間戳的轉換。

