Springboot一个注解搞定返回参数key转换功能
作者:小目标青年 时间:2022-06-21 00:11:24
前言
平时在搬砖的时候,大家有没有遇到过这样的一个场景,由于各种不可描述因素导致,
一个接口返回的数据 里面的 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,该篇就到这。
合适的业务场景,合适的技术方案。
来源:https://blog.csdn.net/qq_35387940/article/details/127277319
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
Spring Boot如何整合FreeMarker模板引擎
ActiveMQ安装及部署教程图解
![](https://img.aspxhome.com/file/2023/3/59483_0s.png)
详解springboot集成mybatis xml方式
![](https://img.aspxhome.com/file/2023/8/64478_0s.png)
Android实现带动画效果的可点击展开TextView
![](https://img.aspxhome.com/file/2023/9/85989_0s.png)
Java毕业设计实战之校园一卡通系统的实现
![](https://img.aspxhome.com/file/2023/1/72521_0s.jpg)
SpringBoot文件上传功能的实现方法
![](https://img.aspxhome.com/file/2023/2/63632_0s.png)
SpringCloud之Config配置中心与Redis分布式锁详解
![](https://img.aspxhome.com/file/2023/1/77961_0s.jpg)
java 反射机制详解及实例代码
Spring-boot的debug调试代码实例
Java适配器模式_动力节点Java学院整理
![](https://img.aspxhome.com/file/2023/6/65636_0s.jpg)
java 面试题闰年判断详解及实例
详解AOP与Filter拦截请求打印日志实用例子
![](https://img.aspxhome.com/file/2023/1/72911_0s.png)
Java实现的Base64加密算法示例
![](https://img.aspxhome.com/file/2023/8/58618_0s.jpg)
Java 17 更快的 LTS 节奏
![](https://img.aspxhome.com/file/2023/0/71830_0s.png)
SpringBoot实现启动项目后立即执行的方法总结
C#-WinForm跨线程修改UI界面的示例
![](https://img.aspxhome.com/file/2023/0/76420_0s.png)
C# WinForm导出Excel方法介绍
在.NET中读取嵌入和使用资源文件的方法
![](https://img.aspxhome.com/file/2023/0/80050_0s.gif)
springboot v2.0.3版本多数据源配置方法
![](https://img.aspxhome.com/file/2023/5/57825_0s.png)
Sonar编译问题对应:File [...] can't be indexed twice.
![](https://img.aspxhome.com/file/2023/3/58903_0s.png)