java中JsonSerializer的用法(前后端單位轉換必備)


背景

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

演示

后端用的是Date做單位

前端用的是秒做單位

解決方法

利用@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;

這樣就完成了時間戳的轉換。
轉換后的時間


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM