@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源码地址
欢迎关注公众号,查看更多内容 :
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Springboot 默认的 json处理方式 Jackson
Springboot 默认的json处理方式 Jackson Springboot 处理返回参数的设置问题,接上篇SpringBoot 整合 fastjson 配置文件 package com.summer.isnow.config; import com.fasterxml.jackson.core.JsonGenerator; import com.fasterxml.jackson.databind.JsonSerializer; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.SerializerProvider; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.context.annotation.Bean; import org.springframework.context....
- 下一篇
这10到Java面试题,90%的人不会
先来看看这10道Java面试题你会几道?1.为什么等待和通知是在 Object 类而不是 Thread 中声明的?2.为什么Java中不支持多重继承?3.为什么Java不支持运算符重载?4.为什么 String 在 Java 中是不可变的?5.为什么 char 数组比 Java 中的 String 更适合存储密码?6.如何使用双重检查锁定在 Java 中创建线程安全的单例? 编写 Java 程序时, 如何在 Java 中创建死锁并修复它? 如果你的Serializable类包含一个不可序列化的成员,会发生什么?你是如何解决的? 为什么Java中 wait 方法需要在 synchronized 的方法中调用?10.你能用Java覆盖静态方法吗?如果我在子类中创建相同的方法是编译时错误? 这些问题主要来自 Java 核心部分 ,不涉及 Java EE 相关问题。你可能知道这些棘手的 Java 问题的答案,或者觉得这些不足以挑战你的 Java 知识,但这些问题都是容易在各种 Java 面试中被问到的,许多程序员都觉得很难回答。 1.为什么等待和通知是在 Object 类而不是 Thread ...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Linux系统CentOS6、CentOS7手动修改IP地址
- CentOS8编译安装MySQL8.0.19
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS7,CentOS8安装Elasticsearch6.8.6
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- CentOS关闭SELinux安全模块
- MySQL8.0.19开启GTID主从同步CentOS8
- 设置Eclipse缩进为4个空格,增强代码规范
- SpringBoot2整合Redis,开启缓存,提高访问速度
- Docker快速安装Oracle11G,搭建oracle11g学习环境