@JsonIgnore 是一个 Jackson 库中的注解,用于在 JSON 数据的序列化和反序列化过程中忽略特定的字段。当一个字段被标记为 @JsonIgnore 时,在对象被序列化时,该字段将不会被包含在 JSON 输出中;在反序列化时,该字段也会被忽略。
这个注解在需要排除某些字段不被包含在对象的 JSON 表示中时非常有用,比如一些敏感信息或者不应该被暴露的内部实现细节。它可以应用于字段、getter 或 setter 方法,并且也可以用在类级别上,以忽略整个类的序列化或反序列化。
举个例子:
(1)一个控制器
@RestController public class UserController { @GetMapping("/user") public ResponseEntity<User> getUser() { User user = new User(); user.setUsername("Tom"); user.setPassword("123456"); return ResponseEntity.ok(user); } }
(2)用户信息实体
public class User { private String username; @JsonIgnore private String password; public String getPassword() { return password; } }
或者
public class User { private String username; private String password; @JsonIgnore public String getPassword() { return password; } }
上面例子中,当访问 /user 接口时,返回的 JSON 字符串中将不包含 password 字段。因为 password 字段被标记为 @JsonIgnore,因此在序列化 User 对象时,password 字段不会被包含在 JSON 输出中。