今天在翻阅spring文档 spring 4.3.9 web功能 点击跳转 的时候发现了倒数第三条有一个新的改动。
JsonView 点击跳转
在我们现实开发中,经常会出现对一些字段隐藏掉,返回的json不显示此字段,比如password 。
这有时候比如我就是写DTO或者设置字段为null
麻烦是麻烦的
@RestController
public class UserController {
@GetMapping("/user")
@JsonView(User.WithoutPasswordView.class)
public User getUser() {
return new User("eric", "7!jd#h23");
}
}
public class User {
//没有password字段的视图
public interface WithoutPasswordView {};
//有password字段的视图
public interface WithPasswordView extends WithoutPasswordView {};
private String username;
private String password;
public User() {
}
public User(String username, String password) {
this.username = username;
this.password = password;
}
@JsonView(WithoutPasswordView.class)
public String getUsername() {
return this.username;
}
@JsonView(WithPasswordView.class)
public String getPassword() {
return this.password;
}
}
结果【WithoutPasswordView】
{
"username": "eric"
}
结果【WithPasswordView】
{
"username": "eric",
"password": "7!jd#h23"
}
看 getUsername()
方法挂了注解 @JsonView(WithoutPasswordView.class)
,因为WithPasswordView
继承于WithoutPasswordView
,所以WithPasswordViewy
也会有username
字段
但是getPassword()
又挂了WithPasswordView
,所以WithPassword
有两个字段[name,pasword]
,但是WithoutPasswordView
没有password
字段,只有username
字段
这种只针对jackson
不得不说现在的spring语法糖越来越多了。。。