作用:
@JsonView可以过滤pojo的属性,使Controller在返回json时候,pojo某些属性不返回,比如User的密码,一般是不返回的,就可以使用这个注解。
使用:
- 使用接口来声明多个视图
- 在pojo的get方法上指定视图
- 在Controller方法上指定视图
示例:
/**
* Created by linchaokun on 2018/8/9.
*/
@Data
public class User {
/**
* 用户简单视图
*/
public interface UserSimpleView{}
/**
* 用户详情视图
*/
public interface UserDetailsView extends UserSimpleView{}
@JsonView(UserSimpleView.class)
private String id;
@JsonView(UserSimpleView.class)
private String username;
@JsonView(UserDetailsView.class)
private String password;
}
/**
* Created by linchaokun on 2018/8/9.
*/
@RestController
@RequestMapping("/user")
public class UserController {
@GetMapping
@JsonView(User.UserSimpleView.class)
public List<User> query(UserQueryForm queryForm, @PageableDefault(page = 1,size = 10,sort = "username,desc") Pageable pageable){
List<User> users = Arrays.asList(new User(queryForm.getUsername(),"111"), new User(queryForm.getUsername(),"222"), new User(queryForm.getUsername(),"333"));
return users;
}
@GetMapping("/{id}")
@JsonView(User.UserDetailsView.class)
public User getUserInfo(@PathVariable String id){
User user = new User();
user.setId(id);
user.setUsername("chaokun");
user.setPassword("111");
return user;
}
}