JsonIgnore注解

@JsonIgnore注解

背景

  • JSON

定义

  • @JsonIgnoreJackson 框架(Java 中最常用的 JSON 序列化 / 反序列化工具)提供的注解,作用是:在将 Java 对象转换成 JSON 字符串(序列化),或把 JSON 字符串转换成 Java 对象(反序列化)时,忽略被该注解标记的字段 / 方法。简单说:加了这个注解的字段,不会出现在 JSON 数据里;反序列化时,JSON 里的对应字段也不会赋值给 Java 对象的这个字段。

为什么要用 @JsonIgnore?

  • 实际开发中常见场景:

    • 隐藏敏感信息:比如用户的密码(password)、token 等字段,不希望返回给前端;

    • 避免循环引用:比如 A 对象引用 B,B 又引用 A,序列化时会无限递归,忽略其中一个引用字段就能解决;

    • 排除无意义字段:比如临时计算的字段、数据库主键(前端不需要)等。

和 @JsonIgnoreProperties 的区别

  • @JsonIgnore:标记单个字段 / 方法;
  • @JsonIgnoreProperties:标记在类上,批量忽略多个字段(比如 @JsonIgnoreProperties({"password", "token"}));
  • 框架兼容性:Spring Boot/Spring MVC 内置了 Jackson,所以在 Controller 中返回对象时,该注解会自动生效;如果用 FastJSON 等其他 JSON 工具,该注解无效(FastJSON 用 @JSONField(serialize=false))。

总结

  • @JsonIgnore 是 Jackson 框架的注解,核心作用是忽略字段的 JSON 序列化 / 反序列化;
  • 主要用于隐藏敏感信息、解决循环引用,优先直接标记在实体类字段上;
  • 使用前需确保引入 Jackson 依赖,且注意不同 JSON 工具的注解不通用。