我們做后端開發的有時候要返回給前端的數據格式不符合怎么辦?
舉個例子,比如一張表中的時間,數據庫中存儲的是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時不返回給前端