Spring @JsonView使用

来源:互联网 发布:如何调用数组方法 编辑:程序博客网 时间:2024/05/16 10:28
  1. 使用场景:过滤多余数据,减少网络传输
  2. 导入maven依赖
    <dependency>   <groupId>com.fasterxml.jackson.core</groupId>   <artifactId>jackson-annotations</artifactId>   <version>2.8.8</version></dependency>
  3. 定义视图接口供客户端调用:
          public class View {                                                                                                               public interface Account{}//用户基本信信息          public interface Authorization extends Account{}//用户验证视图接口名称          public interface WithoutPassword extend Account{}// 无需密码视图接口名称      }

  4. 根据实际需求实现不同的视图(2种方式定义,第一种定义在BEAN的属性上面,第二种定义在bean属性的get方法上面)
    public class User {private Long id;private String name;        //@JsonView(View.Account.class) 公共属性继承接口实现private String account;private String password;private Long createTime;
           //返回的JSON字符串包含id属性
    @JsonView(View.WithoutPassword.class)public Long getId() {return id;}public void setId(Long id) {this.id = id;}
           //返回的JSON字符串包含name属性
    @JsonView(View.WithoutPassword.class)public String getName() {return name;}public void setName(String name) {this.name = name;}
    public String getAccount() {return account;}public void setAccount(String account) {this.account = account;}
            //返回的JSON字符串包含密码属性
    @JsonView(View.Authorization.class)public String getPassword() {return password;}public void setPassword(String password) {this.password = password;} //返回的JSON字符串包含createTime属性@JsonView(View.WithoutPassword.class)public Long getCreateTime() {return createTime;}public void setCreateTime(Long createTime) {this.createTime = createTime;}public String toString() {return this.getClass().getName() + '_' + id;}}
原创粉丝点击