Spring 排除 Controller 返回的 VO 对象中的属性

@JsonIgnore 是一个 Jackson 库中的注解,用于在 JSON 数据的序列化和反序列化过程中忽略特定的字段。当一个字段被标记为 @JsonIgnore 时,在对象被序列化时,该字段将不会被包含在 JSON 输出中;在反序列化时,该字段也会被忽略。

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

一寸光阴一寸金,寸金难买寸光阴。——《增广贤文》
1 不喜欢
说说我的看法 -
全部评论(
没有评论
关于
本网站属于个人的非赢利性网站,转载的文章遵循原作者的版权声明,如果原文没有版权声明,请来信告知:hxstrive@outlook.com
公众号