Springboot一个注解搞定返回参数key转换功能

 更新时间:2022年10月12日 15:11:02   作者:小目标青年  
平时在搬砖的时候,大家有没有遇到过这样场景,由于各种因素导致,一个接口返回的数据里面的key是A, 但是客户端(前端)要求返回的key不叫A叫Aa 。也就是返回的值不变,就是key换了。本文将通过一个注解搞定返回参数key转换,需要的可以了解一下

前言

平时在搬砖的时候,大家有没有遇到过这样的一个场景,由于各种不可描述因素导致,

一个接口返回的数据 里面的 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转换内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 一文秒懂 kafka HA(高可用)

    一文秒懂 kafka HA(高可用)

    这篇文章主要介绍了秒懂 kafka HA(高可用)的相关知识,本文我们来说一说和 kafka 高可用相关的一些策略,对kafka HA相关知识感兴趣的朋友一起看看吧
    2021-11-11
  • SpringBoot快速过滤出一次请求的所有日志的示例代码

    SpringBoot快速过滤出一次请求的所有日志的示例代码

    在现网出现故障时,我们经常需要获取一次请求流程里的所有日志进行定位,本文给大家介绍了SpringBoot如何快速过滤出一次请求的所有日志,文中有相关的代码和示例供大家参考,需要的朋友可以参考下
    2024-03-03
  • Java实现数字金额转化为英文金额功能

    Java实现数字金额转化为英文金额功能

    在处理财务数据时,有时需要将数字形式的金额转换成英文描述的形式,比如在生成正式文件或发票时,本文将介绍如何使用Java实现这一功能,需要的朋友可以参考下
    2025-03-03
  • Java因项目配置不当而引发的数据泄露

    Java因项目配置不当而引发的数据泄露

    这篇文章主要介绍了Java因项目配置不当而引发的数据泄露解决办法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-09-09
  • 浅谈Zookeeper开源客户端框架Curator

    浅谈Zookeeper开源客户端框架Curator

    这篇文章主要介绍了浅谈Zookeeper开源客户端框架Curator的相关内容,具有一定参考价值,需要的朋友可以了解下。
    2017-10-10
  • Java System.setProperty()用法详解

    Java System.setProperty()用法详解

    这篇文章主要介绍了Java System.setProperty()用法详解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-08-08
  • nacos单机本地配置文件存储位置方式

    nacos单机本地配置文件存储位置方式

    这篇文章主要介绍了nacos单机本地配置文件存储位置方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-11-11
  • 智能 AI 代码生成工具 Cursor 安装和使用超详细教程

    智能 AI 代码生成工具 Cursor 安装和使用超详细教程

    Cursor.so 是一个集成了 GPT-4 的国内直接可以访问的,优秀而强大的免费代码生成器,可以帮助你快速编写、编辑和讨论代码,这篇文章主要介绍了智能 AI 代码生成工具 Cursor 安装和使用介绍,需要的朋友可以参考下
    2023-05-05
  • Java Socket实现多线程通信功能示例

    Java Socket实现多线程通信功能示例

    这篇文章主要介绍了Java Socket实现多线程通信功能,结合具体实例形式较为详细的分析了java多线程通信的原理及客户端、服务器端相应实现技巧,需要的朋友可以参考下
    2017-06-06
  • 如何使用spring ResponseEntity处理http响应

    如何使用spring ResponseEntity处理http响应

    这篇文章主要介绍了如何使用spring ResponseEntity处理http响应的操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-07-07

最新评论