@JsonSerialize不起作用的解決方案
@JsonSerialize不起作用
在項(xiàng)目中 當(dāng)字段實(shí)體類(lèi)為L(zhǎng)ong類(lèi)型時(shí)
如果Long值超過(guò)前端js顯示的長(zhǎng)度范圍時(shí)會(huì)導(dǎo)致前端回顯錯(cuò)誤
此時(shí)我們想到的解決方案是將Long值返回給前端時(shí)轉(zhuǎn)為String,
但是我們又不想變更字段的類(lèi)型,當(dāng)然我們也不想額外添加新的字段。
這個(gè)時(shí)候我們可以用@JsonSerialize,在Json序列化的時(shí)候把Long自動(dòng)轉(zhuǎn)為String,
但是這里有個(gè)小坑
被轉(zhuǎn)換的字段必須是包裝類(lèi)類(lèi)型,否則會(huì)轉(zhuǎn)換失敗。
@JsonSerialize(using = ToStringSerializer.class) private Long parentId; //轉(zhuǎn)化成功
@JsonSerialize(using = ToStringSerializer.class) private long parentId; //轉(zhuǎn)化失敗
@JsonSerialize正確使用
實(shí)際開(kāi)發(fā)中,我們一定遇到過(guò)這樣的問(wèn)題:前端顯示和后臺(tái)存儲(chǔ)數(shù)據(jù)單位不統(tǒng)一,而且各有各自的理由,統(tǒng)一不了,那就只能由后端轉(zhuǎn)換。
每次返回給前端時(shí)再轉(zhuǎn)換一遍,返回給前端的json數(shù)據(jù),在后端里定義的往往是一個(gè)對(duì)象,如何做到優(yōu)雅的轉(zhuǎn)換呢?只需兩步操作:
1. 寫(xiě)一個(gè)負(fù)責(zé)轉(zhuǎn)換的類(lèi)
里面寫(xiě)好規(guī)則
public class MySerializerUtils extends JsonSerializer<Integer> { @Override public void serialize(Integer status, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException, JsonProcessingException { String statusStr = ""; switch (status) { case 0: statusStr = "新建狀態(tài)"; break; case 1: statusStr = "就緒狀態(tài)"; break; case 2: statusStr = "運(yùn)行狀態(tài)"; break; case 3: statusStr = "阻塞和喚醒線程"; break; case 4: statusStr = " 死亡狀態(tài)"; break; default: statusStr = "狀態(tài)信息不符合"; } jsonGenerator.writeString(statusStr); } }
2. 在實(shí)體類(lèi)上需要裝換的字段上加上注解
/** * 多線程生命周期狀態(tài)值 */ @JsonSerialize(using = MySerializerUtils.class) private int status;
注:@JsonSerialize注解,主要應(yīng)用于數(shù)據(jù)轉(zhuǎn)換,該注解作用在該屬性的getter()方法上。
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
IDEA中 Getter、Setter 注解不起作用的問(wèn)題如何解決
這篇文章主要介紹了IDEA中 Getter、Setter 注解不起作用的問(wèn)題如何解決,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-08-08Jsoup獲取全國(guó)地區(qū)數(shù)據(jù)屬性值(省市縣鎮(zhèn)村)
這篇文章主要介紹了Jsoup獲取全國(guó)地區(qū)數(shù)據(jù)屬性值(省市縣鎮(zhèn)村)的相關(guān)資料,需要的朋友可以參考下2015-10-10IDEA+Maven搭建JavaWeb項(xiàng)目的方法步驟
本文主要介紹了IDEA+Maven搭建JavaWeb項(xiàng)目的方法步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-11-11IDEA mybatis-generator逆向工程生成代碼
這篇文章主要介紹了IDEA mybatis-generator逆向工程生成代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-06-06SpringBoot集成內(nèi)存數(shù)據(jù)庫(kù)H2的實(shí)踐
h2是內(nèi)存數(shù)據(jù)庫(kù),查詢(xún)高效,可以在開(kāi)發(fā)初期使用它。本文主要介紹了SpringBoot集成內(nèi)存數(shù)據(jù)庫(kù)H2的實(shí)踐,具有一定的參考價(jià)值,感興趣的可以了解一下2021-09-09springboot如何接收application/x-www-form-urlencoded類(lèi)型的請(qǐng)求
這篇文章主要介紹了springboot如何接收application/x-www-form-urlencoded類(lèi)型的請(qǐng)求,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-11-11基于spring-boot-maven-plugin插件打包lib文件外置的方法(layout模式為ZIP模式)
Maven是一個(gè)插件執(zhí)行框架,所有工作都由插件完成,同時(shí)?Maven?基于構(gòu)建生命周期的核心概念,明確定義了構(gòu)建和分發(fā)特定工件(項(xiàng)目)的過(guò)程,接下來(lái)通過(guò)本文給大家介紹下基于spring-boot-maven-plugin插件打包lib文件外置(layout模式為ZIP模式),需要的朋友可以參考下2022-09-09被kafka-client和springkafka版本坑到自閉及解決
這篇文章主要介紹了被kafka-client和springkafka版本坑到自閉及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-03-03java web將數(shù)據(jù)導(dǎo)出為pdf格式文件代碼片段
這篇文章主要為大家詳細(xì)介紹了java web將數(shù)據(jù)導(dǎo)出為pdf格式文件代碼片段,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-01-01