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别名都出现的情况下,会匹配第一个值。

相关推荐
我叫黑大帅2 分钟前
六边形架构?小白也能秒懂的「抗造代码秘诀」
java·后端·架构
不穿格子的程序员3 分钟前
Java基础篇——JDK新特性总结
java·虚拟线程·jdk新特性
一乐小哥11 分钟前
Java8 党狂喜!这篇把 Java9 到 25 的实用新功能讲透了,新手也能直接抄
java
草莓熊Lotso22 分钟前
Git 本地操作进阶:版本回退、撤销修改与文件删除全攻略
java·javascript·c++·人工智能·git·python·网络协议
Ka1Yan23 分钟前
[数组] - LeetCode 704. 二分查找
java·开发语言·算法·leetcode·职场和发展
合作小小程序员小小店33 分钟前
web网页开发,在线%餐饮点餐%系统,基于Idea,html,css,jQuery,java,ssm,mysql。
java·前端·数据库·html·intellij-idea·springboot
SimonKing36 分钟前
IntelliJ IDEA 2025.2.x的小惊喜和小BUG
java·后端·程序员
曾帅16843 分钟前
idea springboot开发编译所见即所得应用不需要重启
java·spring boot·intellij-idea
q***01771 小时前
Spring Boot 热部署
java·spring boot·后端
Seven971 小时前
SpringCloud 常见面试题(三)
java