天天看點

Springboot 一個注解搞定傳回參數key轉換 【實用】

前言

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

一個接口傳回的資料 裡面的 key 是 A , 但是用戶端(前端) 要求傳回的key 不叫 A 叫 Aa 。

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

例如 :

Springboot 一個注解搞定傳回參數key轉換 【實用】

正文 

那麼需要怎麼做的 ? 

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

Springboot 一個注解搞定傳回參數key轉換 【實用】

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

Springboot 一個注解搞定傳回參數key轉換 【實用】

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

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

但是也有情況是,這個傳回的類,你用的是别人的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>

Springboot 一個注解搞定傳回參數key轉換 【實用】

實操示例:

寫個模拟的調用接口,拿到傳回資料 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;

}

可以看到傳回值: 

Springboot 一個注解搞定傳回參數key轉換 【實用】

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

@JsonProperty

Springboot 一個注解搞定傳回參數key轉換 【實用】

 可以看到傳回值: 

Springboot 一個注解搞定傳回參數key轉換 【實用】

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

@JsonMixin  + @JsonProperty

Springboot 一個注解搞定傳回參數key轉換 【實用】
Springboot 一個注解搞定傳回參數key轉換 【實用】

可以看下傳回結果 :

繼續閱讀