Skip to content

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