@JsonProperty 注解的作用

张开发
2026/4/15 6:03:43 15 分钟阅读

分享文章

@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(valueid, requiredtrue)defaultValue指定默认值JsonProperty(defaultValue0)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... }输出 JSONJSON复制{ product_id: 1001, product_name: iPhone, price: 5999.00, createTime: 2024-01-15T10:30:00 }JsonProperty是处理 Java 对象与 JSON 之间映射最常用的注解特别是在字段命名规范不一致如 Java 驼峰命名 vs JSON 下划线命名时非常实用。

更多文章