Spring Boot 3 Jackson 注解全景实战总结
Spring Boot 3 默认集成 Jackson 最新版本,对 java.time、record、多态序列化等都有良好支持。掌握以下注解,可以覆盖 95% 以上 JSON 序列化与反序列化的场景。
一、核心基础注解(处理属性与忽略)
1. @JsonProperty
作用:自定义 JSON 字段名,指定是否必须、顺序等。
场景:Java 字段名与 JSON 键名不一致时。
public class User {
@JsonProperty("id")
private Long userId;
@JsonProperty(value = "full_name", required = true)
private String name;
}
// 输出: {"id":1,"full_name":"Alice"}
2. @JsonIgnore
作用:忽略某个字段。
场景:保护敏感信息(如密码)。
public class User {
private String name;
@JsonIgnore
private String password;
}
// 输出: {"name":"Tom"} (password 不会出现在 JSON 中)
3. @JsonIgnoreProperties
作用:类级别,批量忽略属性,可忽略未知字段。
场景:处理第三方 API 的冗余或未知字段。
@JsonIgnoreProperties(value = {"internalId", "secret"}, ignoreUnknown = true)
public class User {
private String name;
}
// 输入 JSON 中有 internalId、secret 字段也会被忽略,不报错
4. @JsonInclude
作用:控制属性何时序列化。
场景:排除 null、空集合,简化响应。
@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; // 空集合时不输出
}
二、日期与时间格式化
5. @JsonFormat
作用:指定日期格式和时区。
场景:统一 API 返回时间格式。
public class Event {
@JsonFormat(shape = JsonFormat.Shape.STRING,
pattern = "yyyy-MM-dd HH:mm:ss",
timezone = "Asia/Shanghai")
private LocalDateTime createTime;
}
// 输出: {"createTime":"2023-10-27 15:30:00"}


1587

被折叠的 条评论
为什么被折叠?



