@JsonView 的使用

#@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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章