SpringBoot3和Jackson注解
主要常用注解
@JsonProperty
主要用于自定义字段名,场景是Java 字段名与 JSON 键不同
java
@JsonProperty(category_name)
private String categoryName;json
{
"category_name": "人文"
}@JsonIgnore
主要用于保护敏感信息,忽略某个字段
java
private String username;
@JsonIgnore
private String password;password不会出现在json中
json
{
"username": "admin"
}@JsonIgnoreProperties
类级别,批量忽略属性,可忽略未知字段,主要用于处理第三方 API 的冗余或未知字段
java
@JsonIgnoreProperties(value = {"internalId", "secret"}, ignoreUnknown = true)
public class User {
private String name;
}
// 输入 JSON 中有 internalId、secret 字段也会被忽略,不报错@JsonInclude
控制属性何时序列化,排除 null、空集合,简化响应
java
@JsonInclude(JsonInclude.Include.NON_NULL)
public class ApiResponse<T> {
private String status;
private T data; // 如果 data=null,不会输出
}
public class Example {
@JsonInclude(JsonInclude.Include.NON_EMPTY)
private List<String> tags; // 空集合时不输出
}@JsonFormat
指定日期格式和时区,统一 API 返回时间格式
java
public class User {
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime createTime;
}
// 输出: {"createTime":"2025-10-27 15:30:00"}@JsonAlias
反序列化时支持多个别名
java
public class User {
@JsonAlias({"user_name","uname"})
private String username;
}
// {"uname":"Tom"} 或 {"user_name":"Tom"} 都能映射到 username
biubiu