Jackson库中@JsonAlias和@JsonProperty的使用和区别

@JsonAlias

用于指定 JSON 字段的别名。这意味着当从 JSON 反序列化到 Java 对象时,除了默认字段名称外,还可以识别指定的别名。

@JsonProperty

这个注解告诉 Jackson 在进行 JSON 序列化和反序列化时,将 JSON 中的 xxx 字段映射到 Java 类中的某个字段。

例子:

java 复制代码
public class Student {
    // 使用@JsonProperty注解,将JSON中的"student_full_name"字段映射到该字段
    @JsonProperty("student_full_name")
    private String fullName;

    // 使用@JsonAlias注解,为该字段添加别名"name"和"student_name"
    @JsonAlias({"name", "student_name"})
    private String anotherFullName;
}
java 复制代码
{
    "student_full_name": "Tom Lee",
    "student_name": "Peter Chen",
    "name": "Lucy Wang"
}

输出:

fullName字段的值会是"Tom Lee",因为@JsonProperty("student_full_name")明确指定了映射关系,JSON 中的student_full_name键对应的值"Tom Lee"就会被赋给fullName字段。

anotherFullName字段的值会是"Lucy Wang",由于@JsonAlias({"name", "student_name"})注解存在,且多个别名都出现时取第一个匹配到的别名对应的值,在解析顺序上先匹配到name这个别名,其对应的值"Lucy Wang"就会被赋给anotherFullName字段。

区别:

@JsonAlias为别名,说明原名称依然可以映射,同时别名也可以,相当于一对多,而@JsonProperty则单纯代表一对一映射关系。

注意@JsonAlias别名都出现的情况下,会匹配第一个值。

相关推荐
小许学java3 分钟前
Spring事务和事务传播机制
java·数据库·spring·事务
大学生资源网3 分钟前
基于Javaweb技术的宠物用品商城的设计与实现(源码+文档)
java·mysql·毕业设计·源码·springboot
汤姆yu5 分钟前
基于springboot的热门文创内容推荐分享系统
java·spring boot·后端
星光一影6 分钟前
教育培训机构消课管理系统智慧校园艺术舞蹈美术艺术培训班扣课时教务管理系统
java·spring boot·mysql·vue·mybatis·uniapp
lkbhua莱克瓦249 分钟前
MySQL介绍
java·开发语言·数据库·笔记·mysql
武昌库里写JAVA12 分钟前
在iview中使用upload组件上传文件之前先做其他的处理
java·vue.js·spring boot·后端·sql
董世昌4115 分钟前
什么是事件冒泡?如何阻止事件冒泡和浏览器默认事件?
java·前端
好度22 分钟前
配置java标准环境?(详细教程)
java·开发语言
teacher伟大光荣且正确26 分钟前
关于Qt QReadWriteLock(读写锁) 以及 QSettings 使用的问题
java·数据库·qt
nightseventhunit29 分钟前
base64字符串String.getByte导致OOM Requested array size exceeds VM limit
java·oom