JsonProperty及JSONField注解的使用说明
JsonProperty及JSONField注解的使用
1.JsonProperty
1.1.说明
@JsonProperty 注解是 Jackson 库中的一个注解,广泛用于 Java 对象与 JSON 数据之间的序列化和反序列化。
Jackson 是一个流行的 Java 库,能够将 Java 对象转换为 JSON 格式,反之亦然。
1.2.主要功能
- 指定属性名:
@JsonProperty可以用来定义 JSON 中使用的属性名称,即使它与 Java 类中的属性名称不同。这在需要匹配特定 JSON 格式时非常有用。 - 处理字段的可见性: 可以控制字段是否应该被序列化或反序列化。
- 设置默认值: 可以为字段提供默认值。
- 标记字段的必需性: 可以指示某个字段在反序列化过程中是必需的
1.3.常见属性
value: 指定 JSON 字段的名称。required: 布尔值,指示在反序列化时该字段是否是必需的(默认为 false)。defaultValue: 指定一个默认值,当 JSON 数据中没有提供该字段时使用。
import com.fasterxml.jackson.annotation.JsonProperty;
public class Product {
@JsonProperty(value = "product_id", required = true)
private int id;
@JsonProperty(value = "product_name", defaultValue = "Unnamed Product")
private String name;
// Getters and Setters...
}1.4.示例
import com.fasterxml.jackson.annotation.JsonProperty;
public class User {
@JsonProperty("user_id")
private int id;
@JsonProperty("user_name")
private String name;
@JsonProperty("user_email")
private String email;
// Getters and Setters
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}给定上面的 User 类,下面是其对应的 JSON 表示:
{
"user_id": 1,
"user_name": "John Doe",
"user_email": "john.doe@example.com"
}2.JSONField
2.1说明
@JSONField 是一个来自于阿里巴巴的 Fastjson 库的注解,主要用于处理 Java 对象与 JSON 数据之间的序列化和反序列化。
Fastjson 是一个高性能的 Java 语言编写的 JSON 处理工具。一般使用fastjson2。
2.2主要功能
- 指定字段名称:
@JSONField可以用来定义在 JSON 中使用的属性名称,即使它与 Java 类中的属性名称不一致。这对于需要匹配特定 JSON 格式的场景非常有用。 - 控制序列化/反序列化: 可以控制某个字段是否参与序列化和反序列化。例如,可以通过设置
serialize或deserialize属性为false来排除该字段。 - 格式化日期: 可以指定日期字段在 JSON 中的格式,这对于日期类型的字段尤为重要。
- 定义默认值: 在反序列化时,可以指定默认值,以便当 JSON 数据中缺少该字段时使用。
2.3常用属性
name: 指定 JSON 字段的名称。serialize: 布尔值,指示该字段是否参与序列化(默认为 true)。deserialize: 布尔值,指示该字段是否参与反序列化(默认为 true)。format: 用于格式化时间字段,例如"yyyy-MM-dd"。
import com.alibaba.fastjson.annotation.JSONField;
public class Product {
@JSONField(name = "product_id", serialize = true, deserialize = true)
private int id;
@JSONField(name = "product_name", defaultValue = "Unnamed Product")
private String name;
@JSONField(name = "created_at", format = "yyyy-MM-dd HH:mm:ss")
private Date createdAt;
// Getters and Setters...
}2.4示例
import com.alibaba.fastjson.annotation.JSONField;
public class User {
@JSONField(name = "user_id")
private int id;
@JSONField(name = "user_name")
private String name;
@JSONField(name = "user_email")
private String email;
// Getters and Setters
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}使用上面的 User 类,下面是其对应的 JSON 表示:
{
"user_id": 1,
"user_name": "John Doe",
"user_email": "john.doe@example.com"
}3.使用场景
避免使用lombok的data注解,导致前端接收的json内容的key和后端中bean的id不一致的问题,可以使用上面两个注解,当然也可以手写get set方法,避免此问题
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
Java的HttpClient中使用POST请求传递参数两种常见方式
Apache HttpClient为开发者提供了丰富的接口,用于管理HTTP连接并执行请求,下面这篇文章主要介绍了Java的HttpClient中使用POST请求传递参数两种常见方式,文中通过代码介绍的非常详细,需要的朋友可以参考下2025-06-06
Java多线程 两阶段终止模式Two-Phase Termination Patter
这篇文章主要介绍了Java多线程 两阶段终止模式Two-Phase Termination Patter,该模式有两个角色,分别是Terminator,终止者,负责接收终止请求,执行终止处理,处理完成后再终止自己。TerminationRequester终止请求发出者,用来向Terminator发出终止请求,需要的朋友可以参考一下2021-10-10
Java Stream 的 collect 与 reduce 
在 Java Stream API 中,collect 和 reduce 是两种强大的终止操作,用于将流中的元素累积为最终结果,本文将从核心概念、使用场景、性能特性等多个维度进行对比分析,感兴趣的朋友跟随小编一起看看吧2025-09-09


最新评论