@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 输出中。