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 不喜欢
说说我的看法 -
全部评论(
没有评论
关于
本网站专注于 Java、数据库(MySQL、Oracle)、Linux、软件架构及大数据等多领域技术知识分享。涵盖丰富的原创与精选技术文章,助力技术传播与交流。无论是技术新手渴望入门,还是资深开发者寻求进阶,这里都能为您提供深度见解与实用经验,让复杂编码变得轻松易懂,携手共赴技术提升新高度。如有侵权,请来信告知:hxstrive@outlook.com
公众号