@JsonView

@JsonView是Spring中的一个注解,用于在不同的请求中返回不同的视图。例如,在请求/users中会返回一个包含基本用户信息的List,此时不应该把所有的用户密码等详情返回出来。但是,当请求某一个用户的详情/user/{id:\+d}时候,则需要返回该用户的所有信息。此时,可以通过JsonView注解来表明如何在不同的请求中返回什么样的视图。

JsonView使用步骤

S1:使用接口来声明多个视图

S2:在返回值对象的get方法上指定视图

S3:在Controller方法上指定视图

一个完整的实例

  1. 返回值类:User类
public class User { // 使用接口来声明多个视图 public interface UserSimpleView{}; public interface UserDetailView extends UserSimpleView{}; private Integer id; private int age; private String userName; private String password; //在返回值对象的get方法上指定视图 @JsonView(UserSimpleView.class) public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } @JsonView(UserSimpleView.class) public int getAge() { return age; } public void setAge(int age) { this.age = age; } @JsonView(UserSimpleView.class) public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } @JsonView(UserDetailView.class) public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } } 
  1. Controller类
@RestController @RequestMapping(value = "/rest") public class DemoController { //在Controller方法上指定视图 @GetMapping("/user") @JsonView(User.UserSimpleView.class) public User getUser(){ User user = new User(); user.setId(1); user.setUserName("liyubo"); user.setAge(25); user.setPassword("yyYYuswoYMOS==s"); return user; } } 

 

相关文章