@JsonView 的使用

本文介绍如何利用@JsonView注解在Spring Boot项目中精细化控制RESTful API的响应数据,通过示例展示了直接使用实体类和自定义响应对象两种方式,提高API性能并增强数据安全性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#@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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值