@JsonView 处理返回值,实现接口返回想要的字段

简介: @JsonView 处理返回的json ,实现返回需要的字段

@JsonView 的使用

一、返回的结果直接使用实体类

  • 代码如下

      @RequestMapping("api/user")
      @RestController
      public class UserApi {
      
          /**
           * 如果直接返回UserAdminView ,不需要在ResponseModel 中设置以下内容
           *   @JsonView(value = View.Base.class )
           *   private T data;
           * @return
           */
      
          @RequestMapping(value = "/listUser2",method = RequestMethod.POST)
          public UserAdminView listUser2(){
              UserAdminView userAdminView = new UserAdminView();
              return userAdminView;
          }
      }
    
    • 实体设置如下:
     @Data
     public class UserAdminView {
         public interface UserSimpView{};
         private Integer id;
         @JsonView(value = View.Base.class )
         private String username;
         @JsonView(value = View.Base.class )
         private String password;

         **@JsonView(value = View.Base.class )**
         private String note;
         @JsonView(value = View.Base.class )
         private Map<String,String> map;
         @JsonView(value = View.Base.class )
         private String []  ss;
         @JsonView(value = View.Base.class )
         private int [] intDemo;
         @JsonView(value = View.Base.class )
         private Integer b =null;
         @JsonView(value = View.Base.class )
         private boolean bbbb ;
         @JsonView(value = View.Base.class )
         private List<String> dd;
    }
  • 实现控制

    public class View {
    public interface Base{};
    }
    

二、 使用自己的对象

  • 代码如下

     @RequestMapping("api/user")
     @RestController
     public class UserApi {
     
      /**
       * 自己设定了返回值的用这个
       * @return
       */
      @RequestMapping(value = "/listUser",method = RequestMethod.POST)
      public ResponseModel listUser(){
          UserAdminView userAdminView = new UserAdminView();
          return new ResponseModel(ResponseCode.OK,userAdminView);
      }
     }
  • ResponseModel 设置

    package com.json.demo.common;
    import com.fasterxml.jackson.annotation.JsonView;
    import java.io.Serializable;
    
    
    public class ResponseModel<T> implements Serializable {
    
      private static final long serialVersionUID = 1L;
      private int code;
      private String message;
    
      //重点是这里
      **@JsonView(value = View.Base.class )
      private T data;**
    
      public ResponseModel(int code, String message, T responseData) {
     this.code = code;
     this.message= message;
     this.data = responseData;
      }
    
    }
    
  • 实体、view 和第一种一样。
    github源码地址
    欢迎关注公众号,查看更多内容 :
    XG54_9_WXMH_5X_HB_H_7V
相关文章
|
3月前
|
分布式数据库 数据库 数据库管理
什么是分布式数据库
什么是分布式数据库
|
存储 Kubernetes Linux
基于MinIO搭建高性能文件服务器
基于MinIO搭建高性能文件服务器
842 0
基于MinIO搭建高性能文件服务器
|
7月前
|
安全 应用服务中间件 网络安全
将SSL证书设置成HTTPS的详细步骤
将SSL证书设置成HTTPS的详细步骤
|
SQL Oracle 关系型数据库
Java连接各种数据库操作(mysql、oracle、postgresql、gbase、mongo)
Java连接各种数据库操作(mysql、oracle、postgresql、gbase、mongo)
441 0
|
API
Swagger2.0注解的正确使用姿势
Swagger2.0注解的正确使用姿势
359 0
Swagger2.0注解的正确使用姿势
|
9月前
|
存储 编解码 分布式计算
简单说一下阿里云OSS在哪些应用场景里应用。
简单说一下阿里云OSS在哪些应用场景里应用。
454 0
|
11月前
|
存储 弹性计算 安全
《阿里云认证的解析与实战-云计算ACP认证》——云计算ACP训练营第2天——三、实操:如何创建对象存储OSS
《阿里云认证的解析与实战-云计算ACP认证》——云计算ACP训练营第2天——三、实操:如何创建对象存储OSS
在请求中传入不定长参数实现不同的逻辑处理的解决办法
在请求中传入不定长参数实现不同的逻辑处理的解决办法
|
存储 NoSQL Redis
一步一步学习Redis——五大数据类型之有序集合(ZSet)的相关命令
一步一步学习Redis——五大数据类型之有序集合(ZSet)的相关命令
一步一步学习Redis——五大数据类型之有序集合(ZSet)的相关命令