首頁 > 軟體

Springboot一個註解搞定返回引數key轉換功能

2022-10-14 14:02:23

前言

平時在搬磚的時候,大家有沒有遇到過這樣的一個場景,由於各種不可描述因素導致,

一個介面返回的資料 裡面的 key 是 A , 但是使用者端(前端) 要求返回的key 不叫 A 叫 Aa 。

也就是返回的值不變,就是key 換了。

例如 :

正文

那麼需要怎麼做的 ? 

① 新寫一個類,用於值的返回,拿到值,把屬性 get set 一下。

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

這個很多人都知道, 繞半天原來是 炒冷飯 ? 且慢。

② 這種方式,其實是一種入侵時調整, 前提是你有許可權能夠改到 原來的 類的 屬性的程式碼 。

但是也有情況是,這個返回的類,你用的是別人的jar引入的, 那就沒辦法直接改人家程式碼。

這時候,大多數的人可能也就只有使用 ① 情況了。

其實不然。

③ 也是這篇想提到的 ,非入侵式的 轉換返回資料的key, 同樣也是通過註解方式實現, 也就是 @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>

實操範例:

寫個模擬的呼叫介面,拿到返回資料 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;
}

可以看到返回值:

先看 入侵式的, 也就是在原來的返回資料的類上面去使用  @JsonProperty  :

@JsonProperty

可以看到返回值:

再看非入侵式的, 建立一個 抽象類 PhoneKeyConvert , 可以指定單個或多個類, 在返回資料的時候,自動轉換key:

@JsonMixin  + @JsonProperty

可以看下返回結果 :

OK,該篇就到這。

合適的業務場景,合適的技術方案。

到此這篇關於Springboot一個註解搞定返回引數key轉換功能的文章就介紹到這了,更多相關Springboot引數key轉換內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com