使用@JsonView注解控制返回的Json属性
我也是刚看到原来还可以这么玩,但是我还是习惯使用Dto,我总感觉这样做的话实体类耦合程度有点高。还是记录以下,万一今后用到了呢
⒈在实体类中使用接口来声明该实体类的多个视图。
⒉在实体类的属性get方法上指定该属性在那个视图中呈现。
package cn.coreqi.security.entities; import com.fasterxml.jackson.annotation.JsonView; public class User {
public interface UserSimpleView{}; //简单视图
public interface UserDetailView extends UserSimpleView{}; //高级视图 private Long id;
private String username;
private String password;
private Integer enabled; public User() {
} public User(Long id, String username, String password, Integer enabled) {
this.id = id;
this.username = username;
this.password = password;
this.enabled = enabled;
} @JsonView(UserSimpleView.class)
public Long getId() {
return id;
} public void setId(Long id) {
this.id = id;
} @JsonView(UserSimpleView.class)
public String getUsername() {
return username;
} public void setUsername(String username) {
this.username = username;
} @JsonView(UserDetailView.class)
public String getPassword() {
return password;
} public void setPassword(String password) {
this.password = password;
}
@JsonView(UserSimpleView.class)
public Integer getEnabled() {
return enabled;
} public void setEnabled(Integer enabled) {
this.enabled = enabled;
} @Override
public String toString() {
return "User{" +
"id=" + id +
", username='" + username + '\'' +
", password='" + password + '\'' +
", enabled=" + enabled +
'}';
}
}
⒊在控制器的Action方法上使用@JsonView注解声明该Action返回的实体类视图。
package cn.coreqi.security.controller; import cn.coreqi.security.entities.User;
import com.fasterxml.jackson.annotation.JsonView;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;
import java.util.ArrayList;
import java.util.List; @RestController
public class UserController {
@GetMapping("/users")
@JsonView(User.UserSimpleView.class)
public List<User> query(){
List<User> users = new ArrayList<>();
users.add(new User(1L,"fanqi","fanqi",1));
users.add(new User(2L,"fanqi","fanqi",1));
users.add(new User(3L,"fanqi","fanqi",1));
return users;
} @GetMapping("/user/{id:\\d+}") //使用正则指定Id为数字
@JsonView(User.UserDetailView.class)
public User getInfo(@PathVariable String id){
return new User(1L,"fanqi","fanqi",1);
}
}
使用@JsonView注解控制返回的Json属性的更多相关文章
- @JsonView注解指定返回的model类中显示的字段
1.User类 package com.imooc.model; import com.fasterxml.jackson.annotation.JsonView; /** * @author oy ...
- ASP.NET Web API 通过参数控制返回类型(JSON|XML)
一个很实用的技巧,可以在访问web api服务的时候指定返回数据的格式类型,比如 json 或者 xml. 因为 web api 默认返回的是XML格式,但是现在json 比较流行,同时网上也有其他的 ...
- SpringMvc返回报文形式的控制-验证方法: JSON or HTML or XML
首先,请求通过accept请求头声明了支持的返回格式 然后,框架根据该请求头和代码实现(注解)选择了对应的MessageConverter处理返回! 一.验证过程 1.返回html 1.1.请求组装 ...
- SpringMVC 返回的 json 中去除某些不必要的属性
修改返回的Model,在对应的属性的get方法上使用 com.fasterxml.jackson.annotation.JsonIgnore 注解即可. 如 @JsonIgnore(true) pub ...
- 解决@ResponseBody注解返回的json中文乱码问题
1. 简介 主要解决@ResponseBody注解返回的json中文乱码问题. 2.解决方案 2.1mvc加上注解(推荐此方法) 在mvc配置文件中假如下面配置(写在 <mvc:annotati ...
- 控制类名(className 属性)设置或返回class属性
控制类名(className 属性) className 属性设置或返回元素的class 属性. 语法: object.className = classname 作用: 1.获取元素的class 属 ...
- jquery ajax 返回的json对象 新增属性值(干货)
$.ajax({ type:"GEt'; url:"你的地址", data:{"你的字段","字段值"} success:funt ...
- jackSon注解– @JsonInclude 注解不返回null值字段
@Data @JsonInclude(JsonInclude.Include.NON_NULL) public class OrderDTO { private String orderId; @Js ...
- 【shiro】2.spring整合shiro,注解控制shiro用户/角色/权限And/OR,没有权限跳转到固定页面
这几天粗浅的把shiro整合到spring中,并且注解控制shiro用户/角色/权限And/OR 步骤: 1.首先maven搭建web项目 2.创建数据库 user/role/authority 其中 ...
随机推荐
- CodeForces922E DP//多重背包的二进制优化
https://cn.vjudge.net/problem/1365218/origin 题意 一条直线上有n棵树 每棵树上有ci只鸟 在一棵树底下召唤一只鸟的魔法代价是costi 每召唤一只鸟,魔法 ...
- 2017-12-14python全栈9期第一天第二节之初始计算机系统
CPU:相当于人的大脑.用于计算 内存:储存数据.4G.8G.32G....成本高.断电即消失 硬盘:固态.机械.长久保存数据+文件 操作系统: 应用程序:
- flask models循环使用和migrate迁移脚本
使用models目的是为了将创建数据库模型的代码与主程序代码分离,migrate的作用就是在数据库字段改变时不用drop表直接做更新操作 新建 models.py exts.py manage.py ...
- centos 7.2 部署并升级gitlab
事由: 老git服务器centos 7.2上的git版本是8.13.5,先特在一台测试机centos 7.2上安装git 8.13.5 后,还原git后,在对测试服务器上git进行升级操作. 测试服务 ...
- 【JS】JS格式化文件大小 单位:Bytes、KB、MB、GB
输入一个表示文件大小的数字,自适应转换到KB,MB,GB 方法一:bytes自适应转换到KB,MB,GB /// <summary> /// 格式化文件大小的JS方法 /// </s ...
- Jquery 添加插件
原文:http://www.iteye.com/topic/545971 jQuery插件的开发包括两种: 一种是类级别的插件开发,即给jQuery添加新的全局函数,相当于给jQuery类本身添加方法 ...
- MyEclipse项目中,让修改后的Servlet文件立即运行生效方法
运行的时候用Debug模式发布如图 java 自动生成get set方法的快捷键是什么? Re:在myeclipse中按住shift+alt+s选择 generate getters and sett ...
- [Android] Android 常见第三方库汇总地址
Android 常见第三方库汇总地址 https://github.com/wasabeef/awesome-android-libraries List of Android Libraries T ...
- weblogic安装错误记录
问题1:/opt/oraInventory路径无效(无法读取/写入/执行) 查看目录权限,发现此目录属于dba,如果用这个目录的话,可能会覆盖掉Oracle数据库相关的东西 再参照weblogic静默 ...
- springboot09-redis
redis安装: 从redis官网下载redis包,解压后: cmd执行命令启动本地redis: D: cd D:\Program Files\redis2.4.5\64bit redis-serve ...