關於@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時不返回給前端

 


免責聲明!

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



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