news 2026/4/27 23:59:34

@JsonProperty 注解的作用

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
@JsonProperty 注解的作用

@JsonProperty是 Jackson 库中用于 JSON 序列化和反序列化的核心注解,主要作用如下:

核心功能

1. 指定 JSON 字段名

将 Java 属性映射到不同的 JSON 键名:

java

复制

public class User { @JsonProperty("user_name") // JSON 中显示为 user_name private String userName; @JsonProperty("user_age") // JSON 中显示为 user_age private int age; }

2. 支持反序列化

即使 JSON 字段名与 Java 属性名不一致,也能正确映射:

java

复制

// JSON: {"user_name": "张三", "user_age": 25} User user = objectMapper.readValue(json, User.class); // user.getUserName() → "张三"

3. 控制字段可见性

  • 即使字段是private的,也能通过注解暴露给 Jackson

  • 不需要显式添加 getter/setter(配合其他配置)

常用参数

表格

参数说明示例
value指定 JSON 字段名@JsonProperty("name")
required反序列化时该字段是否必须存在@JsonProperty(value="id", required=true)
defaultValue指定默认值@JsonProperty(defaultValue="0")
access控制访问权限(只读/只写/读写)见下方示例

高级用法

控制读写权限

java

复制

public class User { // 只序列化到 JSON,不反序列化(如密码) @JsonProperty(access = JsonProperty.Access.WRITE_ONLY) private String password; // 只从 JSON 读取,不序列化(如敏感信息) @JsonProperty(access = JsonProperty.Access.READ_ONLY) private String token; }

用于方法

java

复制

@JsonProperty("full_name") public String getFullName() { return firstName + " " + lastName; }

用于构造参数

java

复制

public class User { private final String name; public User(@JsonProperty("name") String name) { this.name = name; } }

对比其他注解

表格

注解用途适用场景
@JsonProperty指定字段名、控制访问字段名映射、安全控制
@JsonIgnore完全忽略字段不需要序列化的字段
@JsonAlias指定反序列化时的别名兼容多个 JSON 字段名
@JsonFormat格式化日期/数字日期格式转换

完整示例

java

复制

import com.fasterxml.jackson.annotation.JsonProperty; public class Product { @JsonProperty("product_id") private Long id; @JsonProperty("product_name") private String name; @JsonProperty(value = "price", required = true) private Double price; @JsonProperty(access = JsonProperty.Access.READ_ONLY) private Date createTime; // 构造器、getter、setter... }

输出 JSON:

JSON

复制

{ "product_id": 1001, "product_name": "iPhone", "price": 5999.00, "createTime": "2024-01-15T10:30:00" }

@JsonProperty是处理 Java 对象与 JSON 之间映射最常用的注解,特别是在字段命名规范不一致(如 Java 驼峰命名 vs JSON 下划线命名)时非常实用。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/17 22:22:05

大场景渲染实战:从LOD算法到切换策略的深度解析

1. 为什么大场景必须用LOD技术? 第一次接触智慧城市项目时,我被要求渲染一个包含5万栋建筑的数字孪生场景。当把所有高精度模型直接加载后,帧率直接掉到3FPS——就像用PPT播放动画。这个惨痛教训让我明白:没有LOD的大场景渲染就是…

作者头像 李华
网站建设 2026/4/17 20:08:31

从Visio到PPT:科研绘图工具选择的效率革命

1. 科研绘图工具变迁:为什么越来越多人放弃Visio? 十年前实验室的电脑几乎清一色预装Visio,现在博士生们的第一反应却是"直接用PPT画吧"。这个转变背后,是科研绘图需求与工具特性的深度错配。Visio确实有它的优势&#…

作者头像 李华
网站建设 2026/4/17 15:03:44

PowerPaint-V1 Gradio部署教程:消费级显卡也能流畅运行的图像修复工具

PowerPaint-V1 Gradio部署教程:消费级显卡也能流畅运行的图像修复工具 1. 引言:为什么选择PowerPaint-V1 想象一下,你手头有一张珍贵的照片,但上面有个碍眼的物体需要去除;或者你需要修复一张老照片的破损部分。传统…

作者头像 李华
网站建设 2026/4/17 7:20:57

AI净界RMBG-1.4在电商场景的应用:自动生成商品白底图实战

AI净界RMBG-1.4在电商场景的应用:自动生成商品白底图实战 1. 电商商品图的痛点与解决方案 在电商运营中,商品主图的质量直接影响转化率。平台要求主图必须是纯白背景,但传统处理方法面临三大难题: 成本高:专业摄影师…

作者头像 李华
网站建设 2026/4/18 1:22:08

KOOK艺术馆实战教程:基于Streamlit的AI画廊二次开发扩展指南

KOOK艺术馆实战教程:基于Streamlit的AI画廊二次开发扩展指南 “我梦见了画,然后画下了梦。” —— 文森特 梵高 你是否厌倦了那些界面冰冷、操作复杂的AI绘画工具?是否梦想拥有一个属于自己的、充满艺术气息的数字画廊?今天&…

作者头像 李华
网站建设 2026/4/18 1:20:28

RetinaFace人脸检测实战:结合dlib进行68点关键点精细化补充方案

RetinaFace人脸检测实战:结合dlib进行68点关键点精细化补充方案 1. 为什么需要关键点精细化? RetinaFace作为优秀的人脸检测模型,能够准确识别人脸位置并定位5个关键点(双眼、鼻尖、嘴角)。但在很多实际应用中&#…

作者头像 李华