@JsonSerialize(using = LongToStringUtil.class)注解的使用方式
@JsonSerialize(using = LongToStringUtil.class)注解
一般我們在定義private Long id;時,會添加上@JsonSerialize(using = LongToStringUtil.class)這樣類似的注解,接下來我們來看一下這個注解是什么意思?有什么作用?
使用注解
如下所示:
@JsonSerialize(using = LongToStringUtil.class) private Long id;
@JsonSerialize在com.fasterxml.jackson.databind.annotation路徑下,是fastjson包下的接口。
我們實體類中定義的Long類型的數(shù)據(jù)在和前端交互時
會比number數(shù)值更大,會導(dǎo)致精度缺失,使用JsonSerialize注解,可以幫助我們解決該問題。
在using = LongToStringUtil.class
可以使用我們自定義的類,來將我們傳入的值轉(zhuǎn)換為String類型,來傳入到前端,可以解決精度問題
定義的LongToStringUtil類需要繼承自JsonSerializer<Long>類
代碼如下所示:
//在實體類的long類型屬性上加上注解:@JsonSerialize(using =LongToStringSerializer.class) //Long類型數(shù)據(jù)(eg:id)傳到前臺會超出JS精確整形范圍,因此轉(zhuǎn)化為String傳到前臺 public class LongToStringUtil extends JsonSerializer<Long> { @Override public void serialize(Long value, JsonGenerator gen, SerializerProvider serializers) throws IOException { if(null!=value) { gen.writeString(String.valueOf(value)); } } }
@JsonSerialize(using = ToStringSerializer.class)用法及注意事項
該注解的作用
把指定的類型轉(zhuǎn)化String類型返給前端
為什么使用該注解
如果Long值超過前端js顯示的長度范圍時會導(dǎo)致前端回顯錯誤
此時我們想到的解決方案是將Long值返回給前端時轉(zhuǎn)為String,
但是我們又不想變更字段的類型,當(dāng)然我們也不想額外添加新的字段。
這個時候我們可以用@JsonSerialize,在Json序列化的時候把Long自動轉(zhuǎn)為String
示例
/** * 主鍵 */ import com.fasterxml.jackson.databind.annotation.JsonSerialize; import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; @TableId @JsonSerialize(using = ToStringSerializer.class) private Long id;
注意:
一定要在返回的實體類的字段上加上該注解
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
詳解Spring Data JPA動態(tài)條件查詢的寫法
本篇文章主要介紹了Spring Data JPA動態(tài)條件查詢的寫法 ,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-06-06SpringBoot實現(xiàn)微信支付接口調(diào)用及回調(diào)函數(shù)(商戶參數(shù)獲取)
本文詳細介紹了使用SpringBoot實現(xiàn)微信支付接口調(diào)用及回調(diào)函數(shù)的步驟,提供了代碼實現(xiàn)的具體步驟和工具類的創(chuàng)建,感興趣的朋友跟隨小編一起看看吧2024-11-11解決Feign配置RequestContextHolder.getRequestAttributes()為null的問題
這篇文章主要介紹了解決Feign配置RequestContextHolder.getRequestAttributes()為null的問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-01-01