@JsonProperty注解

devtools/2025/3/24 14:27:56/

@JsonProperty 是 Jackson 库中的一个注解,Jackson 是一个流行的 Java 库,用于处理 JSON 数据的序列化(将 Java 对象转换为 JSON 字符串)和反序列化(将 JSON 字符串转换为 Java 对象)。 @JsonProperty 注解的主要作用是在 Java 对象的属性和 JSON 数据的字段之间建立映射关系,以下是详细介绍:

作用

  1. 指定属性名 :当 Java 对象的属性名和 JSON 数据的字段名不一致时,可以使用 @JsonProperty 注解来指定 JSON 字段的名称。
  2. 序列化和反序列化控制 :确保 Java 对象的属性能够正确地序列化为 JSON 数据,或者从 JSON 数据中正确地反序列化为 Java 对象。

示例 1. 属性名和 JSON 字段名不一致

假设我们有一个 JSON 数据如下:

{"user_name": "John Doe","user_age": 30
}

对应的 Java 类可以这样定义:

import com.fasterxml.jackson.annotation.JsonProperty;class User {// 指定 JSON 字段名为 user_name@JsonProperty("user_name")private String name;// 指定 JSON 字段名为 user_age@JsonProperty("user_age")private int age;public 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;}
}

在这个例子中,Java 类的属性名 name 和 age 与 JSON 数据的字段名 user_name 和 user_age 不一致,通过 @JsonProperty 注解建立了映射关系。
2. 序列化和反序列化示例
以下是一个完整的序列化和反序列化示例:

import com.fasterxml.jackson.databind.ObjectMapper;public class Main {public static void main(String[] args) throws Exception {ObjectMapper objectMapper = new ObjectMapper();// 反序列化:将 JSON 字符串转换为 Java 对象String json = "{\"user_name\": \"John Doe\", \"user_age\": 30}";User user = objectMapper.readValue(json, User.class);System.out.println("Name: " + user.getName());System.out.println("Age: " + user.getAge());// 序列化:将 Java 对象转换为 JSON 字符串User newUser = new User();newUser.setName("Jane Smith");newUser.setAge(25);String newJson = objectMapper.writeValueAsString(newUser);System.out.println("JSON: " + newJson);}
}

在这个示例中,首先使用 ObjectMapper 将 JSON 字符串反序列化为 User 对象,然后将一个新的 User 对象序列化为 JSON 字符串。

通过 @JsonProperty 注解,我们可以确保 Java 对象的属性和 JSON 数据的字段之间的映射关系,从而实现正确的序列化和反序列化。


http://www.ppmy.cn/devtools/169729.html

相关文章

优先级与环境变量的艺术:驾驭 Linux 系统的核心

文章目录 前言一、什么是进程优先级?二、Linux 系统中的优先级2.1 查看进程优先级2.2 PRI 和 NI 的关系2.3 修改进程优先级2.4 进程优先级的实现原理2.5 进程的特性 三、环境变量3.1 PATH——搜索可执行文件的目录列表1. 为什么自己写的程序需要加 ./ 才能执行&…

OpenRAND可重复的随机数生成库

OpenRAND 是一个 C++ 库,旨在通过提供强大且可复制的随机数生成解决方案来促进可重复的科学研究。它是一个简单的仅头文件库,性能可移植,统计稳健,并且易于集成到任何 HPC 计算项目中。 特征 跨平台支持:OpenRAND 旨在跨各种平台无缝工作,包括 CPU 和 GPU。其仅标题库设计…

西门子仿真实例位置

C:\Users\san\Documents\Siemens\Simatic\Simulation\Runtime\Persistence S7-PLCSIM Advanced V3.0 可以打开文件,删除重建

QT QML实现音频波形图进度条,可点击定位或拖动进度

前言 本项目实现了使用QT QML创建一个音频波形图进度条的功能。用户可以在界面上看到音频波形图,并且可以点击进度条上的位置进行定位,也可以拖动进度条来调整播放进度。可以让用户更方便地控制音频的播放进度,并且通过音频波形图可以直观地…

数据结构篇——线索二叉树

一、引入 遍历二叉树是按一定规则将二叉树结点排成线性序列,得到先序、中序或后序序列,本质是对非线性结构线性化,使结点(除首尾)在线性序列中有唯一前驱和后继;但以二叉链表作存储结构时,只能获…

Redis解决缓存击穿问题——两种方法

目录 引言 解决办法 互斥锁(强一致,性能差) 逻辑过期(高可用,性能优) 设计逻辑过期时间 引言 缓存击穿:给某一个key设置了过期时间,当key过期的时候,恰好这个时间点对…

Linux:用 runc 构建 ARM 平台容器

文章目录 1. 前言2. 构建 runc2.1 准备 C 交叉编译器2.2 编译 libseccomp 库2.3 编译 runc2.3.1 安装 go 编译器2.3.2 编译 runc 3. 构建 runc 镜像包 测试运行3.1 OCI 规范3.2 手工构建 OCI 镜像3.3 运行 1. 前言 限于作者能力水平,本文可能存在谬误,…

Flink 通过 Chunjun Oracle LogMiner 实时读取 Oracle 变更日志并写入 Doris 的方案

文章目录 一、 技术背景二、 关键技术1、 Oracle LogMiner2、 Chunjun 的 LogMiner 关键流程3、修复 Chunjun Oracle LogMiner 问题 一、 技术背景 在大数据实时同步场景中,需要将 Oracle 数据库的变更数据(CDC) 采集并写入 Apache Doris&am…