概述
举个例子,当我们需要一组用户信息列表的时候,如果当前api面向的是管理员方向,那么我们自然需要数据保持完整,如用户密码、用户手机号这些隐私信息。那么当面向的方向是用户方向呢?我们就需要去"隐藏"这些数据。
而使用JsonView之时,我们只需要在接口上设置对应的注解,来告诉这个接口应该以哪一种类型,去返回数据。
实现
首先创建一个实体类,并生成get/set方法。
public class User {
private String UserName;
private String PassWord;
private String Phone;
...省略
}
然后在其中创建两个接口,分别代表普通视图和管理视图。很明显,在此次设计中管理视图自然包含普通视图的内容。
public interface DataForOrdinary{}
public interface DataForAdmin extends DataForOrdinary{}
然后在对应参数的get方法之上设置@JsonView,其值为刚才我们声明的两个接口。
如以下面PassWord参数,很显然,它应该只有在管理视图才会将其展示,因此我们为其"声明"为管理视图。
@JsonView(DataForAdmin.class)
public String getPassWord() {
return PassWord;
}
其他参数则大同小异。
自此,便可以创建Controller层进行测试,值得注意的是,在此也需要使用注解对其声明。很明显,该接口实现的原理应该就是在此进行二次封装。
@GetMapping("/getUsersForAdmin")
@JsonView(User.DataForAdmin.class)
public List<User> getUsersForAdmin(){
User user = new User("a", "v", "1111");
List<User> list = new ArrayList<>();
list.add(user);
list.add(user);
list.add(user);
return list;
}
本页的评论功能已关闭