Spring Boot 3 Jackson 注解全景实战总结

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"}

三、处理

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值