Springboot一個(gè)注解搞定返回參數(shù)key轉(zhuǎn)換功能
前言
平時(shí)在搬磚的時(shí)候,大家有沒有遇到過這樣的一個(gè)場景,由于各種不可描述因素導(dǎo)致,
一個(gè)接口返回的數(shù)據(jù) 里面的 key 是 A , 但是客戶端(前端) 要求返回的key 不叫 A 叫 Aa 。
也就是返回的值不變,就是key 換了。
例如 :

正文
那么需要怎么做的 ?
① 新寫一個(gè)類,用于值的返回,拿到值,把屬性 get set 一下。

② 也就是本篇文章想提到的 ,使用注解, @JsonProperty

這個(gè)很多人都知道, 繞半天原來是 炒冷飯 ? 且慢。
② 這種方式,其實(shí)是一種入侵時(shí)調(diào)整, 前提是你有權(quán)限能夠改到 原來的 類的 屬性的代碼 。
但是也有情況是,這個(gè)返回的類,你用的是別人的jar引入的, 那就沒辦法直接改人家代碼。
這時(shí)候,大多數(shù)的人可能也就只有使用 ① 情況了。
其實(shí)不然。
③ 也是這篇想提到的 ,非入侵式的 轉(zhuǎn)換返回?cái)?shù)據(jù)的key, 同樣也是通過注解方式實(shí)現(xiàn), 也就是 @JsonMixin + @JsonProperty
ps : springboot 2.7版本以上 支持 @JsonMixin
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.7.2</version>
<relativePath/>
</parent>
實(shí)操示例:
寫個(gè)模擬的調(diào)用接口,拿到返回?cái)?shù)據(jù) Student:
@GetMapping("/queryById")
public Student queryById( Integer id){
Student student=new Student();
student.setId(id);
student.setName("JCccc");
student.setAge(20);
student.setMobile("136XXXXXXXX");
return student;
}可以看到返回值:

先看 入侵式的, 也就是在原來的返回?cái)?shù)據(jù)的類上面去使用 @JsonProperty :
@JsonProperty

可以看到返回值:

再看非入侵式的, 創(chuàng)建一個(gè) 抽象類 PhoneKeyConvert , 可以指定單個(gè)或多個(gè)類, 在返回?cái)?shù)據(jù)的時(shí)候,自動轉(zhuǎn)換key:
@JsonMixin + @JsonProperty


可以看下返回結(jié)果 :

OK,該篇就到這。
合適的業(yè)務(wù)場景,合適的技術(shù)方案。
到此這篇關(guān)于Springboot一個(gè)注解搞定返回參數(shù)key轉(zhuǎn)換功能的文章就介紹到這了,更多相關(guān)Springboot參數(shù)key轉(zhuǎn)換內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java實(shí)現(xiàn)數(shù)字金額轉(zhuǎn)化為英文金額功能
在處理財(cái)務(wù)數(shù)據(jù)時(shí),有時(shí)需要將數(shù)字形式的金額轉(zhuǎn)換成英文描述的形式,比如在生成正式文件或發(fā)票時(shí),本文將介紹如何使用Java實(shí)現(xiàn)這一功能,需要的朋友可以參考下2025-03-03
Java因項(xiàng)目配置不當(dāng)而引發(fā)的數(shù)據(jù)泄露
這篇文章主要介紹了Java因項(xiàng)目配置不當(dāng)而引發(fā)的數(shù)據(jù)泄露解決辦法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-09-09
智能 AI 代碼生成工具 Cursor 安裝和使用超詳細(xì)教程
Cursor.so 是一個(gè)集成了 GPT-4 的國內(nèi)直接可以訪問的,優(yōu)秀而強(qiáng)大的免費(fèi)代碼生成器,可以幫助你快速編寫、編輯和討論代碼,這篇文章主要介紹了智能 AI 代碼生成工具 Cursor 安裝和使用介紹,需要的朋友可以參考下2023-05-05
Java Socket實(shí)現(xiàn)多線程通信功能示例
這篇文章主要介紹了Java Socket實(shí)現(xiàn)多線程通信功能,結(jié)合具體實(shí)例形式較為詳細(xì)的分析了java多線程通信的原理及客戶端、服務(wù)器端相應(yīng)實(shí)現(xiàn)技巧,需要的朋友可以參考下2017-06-06
如何使用spring ResponseEntity處理http響應(yīng)
這篇文章主要介紹了如何使用spring ResponseEntity處理http響應(yīng)的操作,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-07-07

