關於@JsonSerialize註解的使用方法

我們做後端開發的有時候要返回給前端的數據格式不符合怎麼辦?

舉個例子,比如一張表中的時間,數據庫中存儲的是yyy-mm-dd hh:mm:ss 這樣的形式,而前段需要的是精確到秒的格式,那我們不可能直接把這種格式的數據直接返回給前端吧?!

直接返回回去會跟前端掐起來的。。。。那怎麼辦?從數據庫查出來的時候去轉換一下?。嗯可以,但是問題又來了,那我在A方法中查詢要轉換一下,B方法中要轉換一下...

這樣就會導致代碼冗餘。除了使用自定義工具類,還有一種方法更直接,那就是使用@JsonSerialize(com.fasterxml.jackson.databind.annotation.JsonSerialize)註解。

 

使用步驟:

1.在實體類中在要轉換的字段上加上該註解,如下:

    /** 訂單創建時間 */
    @JsonSerialize(using = DateToLongSerializer.class)
    private Date createTiem;

2.並指定一個格式化的類。如下:

public class DateToLongSerializer extends JsonSerializer<Date> {

    @Override
    public void serialize(Date date, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
        jsonGenerator.writeNumber(date.getTime() / 1000);
    }
}

 

 數據存儲在數據庫中的格式:

 

 

轉換後的效果(返回給前端的json格式):

再介紹一個註解:

 

@JsonIgnore 該註解的作用是轉成json時不返回給前端

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章