@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
相关文章
|
JSON 小程序 JavaScript
小程序根据返回值是否为空判断标签是否显示
小程序根据返回值是否为空判断标签是否显示
102 0
|
存储 Java
【方法返回地址】
【方法返回地址】
|
JavaScript
🎖️typeScrpt中如何返回正确的类型?
条件返回类型确实是 TypeScript 中非常有用的强大功能,它允许您根据参数的类型为函数指定不同的返回类型,从而实现更强的类型安全性。
88 0
|
7月前
|
JSON Java API
java 写一个循环不断请求接口A判断返回值是否符合条件,不符合等待30秒继续请求判断
java 写一个循环不断请求接口A判断返回值是否符合条件,不符合等待30秒继续请求判断
222 0
|
7月前
|
定位技术 C++ Python
C++一个函数返回两个或更多个返回值的方法
C++一个函数返回两个或更多个返回值的方法
212 1
|
7月前
自定义封装一个方法让这个方法可以判断所有的数据类型并返回
自定义封装一个方法让这个方法可以判断所有的数据类型并返回
40 0
|
Java 编译器
重载的方法能否根据返回类型进行区分?
重载的方法不能根据返回类型进行区分。方法的重载是基于方法名称和参数列表来进行区分的,与返回类型无关。这是因为在Java中,编译器在确定要调用哪个重载方法时,仅根据传递给方法的参数来进行决策。
381 0
|
前端开发
前端解决后端接口返回数组类型数据为空的报错
前端解决后端接口返回数组类型数据为空的报错
523 0
前端解决后端接口返回数组类型数据为空的报错
|
C++
使用C++模板判断两个类型是否一样
使用C++模板判断两个类型是否一样
143 0
接口中带参方法,传入IB类型的数据
不同的接口有不同的方法 不同的类有不同的作用 不同的作用产生不一样的效果 不同的效果让程序看似复杂,实际简单... 比如此程序,看似复杂,实际就那么点事: 谁生成了谁,谁设置了谁,谁传入了谁,谁被谁调用,谁被谁输出. 如果还是不明白,好记一些就是这个程序之中有两个接口,两个类,四个方法...它们通过创建方法,设置方法的参数值, 有的方法通过其它的对象进行了调用,有的则通过了调用者本身(this),最后随着最后的大括号结束,程序结束了. 世界再次恢复了平静.将编程看作是一门艺术,而不单单是个技术。
1070 0

热门文章

最新文章