【注解】反序列化时匹配多个 JSON 属性名 @JsonAlias 详解

@JsonAlias 注解是 Jackson 提供的一个功能强大的注解,允许一个字段在反序列化时匹配多个 JSON 属性名。它适用于在处理多种输入数据格式时,或当 JSON 数据的键名可能变化时。

一、@JsonAlias 的作用

  • 多种别名:@JsonAlias 允许你为一个字段定义多个可能的 JSON 键名,这在 JSON 数据的键名有多种可能时非常有用。
  • 反序列化:在反序列化时,如果 JSON 中的键名与 @JsonAlias 中定义的别名之一匹配,Jackson
    就会把这个键的值赋给对应的字段。
  • @JsonAlias 的作用除了上述两个之外,也同 @JsonProperty ,详情参考—> 【注解】@JsonProperty 详解

二、示例:使用 @JsonAlias 来处理多个键名

真实使用场景—> 数据库存的JSON数据转为Map,key值是中文,转成英文,转为json数据传给前端

假设你有一个 User 类,它的字段可以接收多个不同的 JSON 键名。例如,可能存在 “名称” “名字”,它们都应该映射到 name 字段。
在这里插入图片描述

import com.fasterxml.jackson.annotation.JsonAlias;public class User {@JsonAlias({"名称", "名字"})private String name;@JsonAlias({"年龄", "岁数"})private int age;@JsonAlias({"性别", "性"})private String gender;// Getters and Setterspublic String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public String getGender() {return gender;}public void setGender(String gender) {this.gender = gender;}
}

使用示例
假设你接收到的 JSON 数据可能是以下两种形式之一:

{"名字": "张三","岁数": 30,"性": "男"
}

或者:

{"名称": "李四","年龄": 25,"性别": "女"
}

@JsonAlias 会处理这两种情况,并将它们都映射到 User 对象中相应的字段上。

控制器中的使用
在这里插入图片描述

@RestController
@RequestMapping("/api")
public class UserController {@PostMapping("/user")public User createUser(@RequestBody User user) {// 此时 user 对象已经根据别名进行了正确的映射return user;  // 可以返回给前端,或者进行其他业务处理}
}

前端处理
无论前端发送的是 “名字” 还是 “名称”,后端都可以正确处理并将其映射到 name 字段上。

@JsonAlias 在反序列化中处理多个别名:适用于处理不同 JSON 格式或处理 JSON 键名变化的场景。
便捷性:通过 @JsonAlias,无需在代码中手动处理不同的键名映射,Jackson 会自动完成这项工作。
增强灵活性:可以更灵活地处理外部输入的数据格式,确保应用程序的兼容性和健壮性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/409510.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MySQL在Windows和Ubuntu上的安装与远程连接配置

MySQL是一个广泛使用的开源关系数据库管理系统,适用于各种操作系统。本文将详细介绍如何在Windows和Ubuntu系统上安装MySQL,并配置远程连接。 1. 在Windows上安装MySQL 1.1 下载MySQL安装包 首先,访问MySQL官方网站(https://de…

UEFI 01记: 开发环境 在 ubuntu22 中搭建 edk2 开发环境并运行简单示例

https://uefi.org 1,预备环境 $ sudo apt install uuid-dev $ sudo apt install nasm $ sudo apt install bison flex $ sudo apt install build-essential $ sudo apt-get install x11proto-xext-dev $ sudo apt-get install libx11-dev $ sudo apt-get install l…

[数据集][目标检测]管道漏水泄漏破损检测数据集VOC+YOLO格式2614张4类

数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):2614 标注数量(xml文件个数):2614 标注数量(txt文件个数):2614 标注…

[windows][apache]Apache代理安装

下载apache服务软件和VC_redist安装包 https://www.apachelounge.com/download/ https://www.microsoft.com/zh-CN/download/details.aspx?id48145 解压文件,修改httpd.conf文件 37行出修改文件的解压目录 60行修改监听端口 安装服务 进入apache的目录&#xf…

美团mtgsig 1.2算法分析

声明 本文以教学为基准、本文提供的可操作性不得用于任何商业用途和违法违规场景。 本人对任何原因在使用本人中提供的代码和策略时可能对用户自己或他人造成的任何形式的损失和伤害不承担责任。 如有侵权,请联系我进行删除。 这里只是我分析的分析过程,以及一些重要点的记录…

帮助我们从曲线图中获取数据的软件分享——GetData Graph Digitizer

在科技论文写作和数据分析过程中,我们常常需要将自己的数据与前人的研究成果进行对比。然而,有时我们只能从别人的论文中获得一张包含坐标轴的曲线图,而无法直接获取原始数据。在这种情况下,GetData Graph Digitizer 软件就显得尤…

人眼检测(单张图像)

生产资料私有化,是阻碍社会发展(包括学习)的一大阻力。希望更多学习资料公出供学习。 目录 实验原理 示例代码 运行结果 注意事项: 在OpenCV中使用C对中可以读取图像文件,检测图像中的人脸和眼睛,并在检测到的眼睛位置绘制矩…

Telnet详解与应用——从原理到实战模拟

1. 引言 在现代网络管理中,远程访问和控制设备的能力至关重要。Telnet是一种经典的远程访问协议,尽管在安全性方面逐渐被SSH等更现代化的协议取代,但其在早期网络管理中的广泛使用使其成为网络工程师的基本技能之一。本文将深入探讨Telnet的…

Leuze ROD4-20 ROD4-38系列激光扫描仪软件与操作手测

Leuze ROD4-20 ROD4-38系列激光扫描仪软件与操作手测

移动式气象站:科技赋能,监测天气

在自然灾害频发、气候变化日益显著的今天,准确、及时地获取气象信息对于农业生产、城市规划、交通运输以及灾害预警等领域至关重要。传统固定气象站虽能提供稳定的观测数据,但在偏远地区、灾害现场或快速变化的环境中,其局限性逐渐显现。为此…

数据仓库系列7:什么是概念模型、逻辑模型和物理模型,它们有什么区别?

你是否曾经困惑于数据仓库中的各种模型?概念模型、逻辑模型、物理模型 - 它们听起来很相似,但实际上各有千秋。 目录 引言:为什么模型如此重要?1. 概念模型:勾勒数据的蓝图什么是概念模型?概念模型的特点概念模型的例子概念模型的作用如何创建概念模型 2. 逻辑模型:细化你的…

十大护眼落地灯品牌哪个牌子好?落地灯品牌排行前十名

十大护眼落地灯品牌哪个牌子好?随着快经济时代的到来,人们在学业以及事业上的压力也日益增加,不少朋友反应在日常工作、学习是经常出现眼部疲劳的状况,甚至会时不时出现眼睛干涩、流泪,对学习、工作状态造成了极大的困…

【Python学习手册(第四版)】学习笔记20.2-迭代和解析(二)-迭代解析、迭代方法的计时比较、函数陷阱

个人总结难免疏漏,请多包涵。更多内容请查看原文。本文以及学习笔记系列仅用于个人学习、研究交流。 本文较简单,主要是概括了解析语法(列表解析、生成器、集合、字典解析),以及对前面的各种迭代进行计时比较&#xf…

漂亮的业绩,重挫的股价,快手“遭遇”了什么?

现象与本质往往背道而驰,如同威廉莎士比亚形容的那般,“表面的平静可能掩盖了深深的波澜。”这一真理不仅充斥在生活中的各个片段,也散布在市场的每一个瞬间。 近日发布二季度财报的快手就迎来了“两级反转”。多项核心业绩指标录得增幅的同…

云计算产业链图谱_产业链全景图_云计算行业市场分析

在产业数字化转型的背景下,云计算作为信息技术的重要组成部分,正逐渐成为各行业数字化、智能化转型的关键支撑。受益于5G、大数据、物联网、人工智能等技术的快速发展,云计算产业规模持续扩大,市场需求不断增长。云计算作为一种新…

网络安全教程初级简介

随着技术的发展和信息池的增加,信息系统迫切需要建立网络安全措施,以保护输入这些系统的信息。网络安全是任何组织(从小型初创公司到大型跨国组织)的必备条件。 网络安全包括一系列技术、流程和实践,用于保护网络、设…

【Kotlin设计模式】Kotlin实现工厂模式

前言 工厂模式(Factory Pattern)是一种创建型设计模式,提供一个创建对象的接口,不暴露对象的创建过程。它将实例化对象的任务交给子类或具体实现,从而使得客户端代码与具体类解耦。 工厂模式主要分为以下三类&#xf…

音乐剪辑软件哪个好用?免费音乐编辑软件大推荐

在音符跳跃的创意海洋里,每一段旋律都藏着一个故事等待被精心雕琢。 但何以让这份灵感自由翱翔,又无需负担昂贵的工具枷锁?哪款音乐剪辑软件免费版能够成为你音乐创作旅程中的最佳拍档? 在这五彩斑斓的数字音频世界中&#xff0…

硬件面试经典 100 题(81~90)题

81、请问下图电路中二极管 D1、D2 有什么作用? 在 Vi 输入电压接近于零时,D1、D2 给三极管 T1、T2 提供偏置电压,使 T1、T2 维持导通,以消除交越失真。 陈氏解释 这道题参见:硬件面试经典 100 题(51~70 题…

Nginx 反向代理实现 Tomcat 高可用性负载均衡详解

Tomcat 简介 Tomcat是Apache软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun和其他一些公司及个人共同开发而成。 Tomcat服务器是一个免费的开放源代码的Web应用服务器,属于轻量级应用服务…