业务场景:比如说一个User对象,有两个字段,一个username,一个password,有一个获取用户信息的接口要返回这个User列表,但是不想要这个User列表的password字段。

还有一个接口要获取这个User列表,要全部字段。

解决场景:我们可以有多种方法,比如说获取list之后把user列表的密码全部设为空,然后再用其他注解来设置  为空的字段不显示

还可以在sql中就不查password字段。

但是  我们要介绍这个注解来实现这个功能。@jsonView

需要三步即可:

  • 第一:用接口来声明多个视图
  • 第二:在值对象的get方法上指定视图
  • 第三:在controller方法上指定视图

话不多说~~~看代码------》

User.java

package com.imooc;

import com.fasterxml.jackson.annotation.JsonView;
import lombok.AllArgsConstructor;
import lombok.Setter; /**
* Created by 敲代码的卡卡罗特
* on 2018/4/14 22:58.
*/
@Setter
@AllArgsConstructor
public class User {
public interface UserInfo{};
public interface UserDetail extends UserInfo{};
private String name;
private String password;
@JsonView(UserInfo.class)
public String getName() {
return name;
}
@JsonView(UserDetail.class)
public String getPassword() {
return password;
}
}

在user对象中声明两个接口(视图),一个继承另一个,你懂得!!!然后在字段的get方法上声明视图

Controller.java

@GetMapping("/hello")
@JsonView(User.UserInfo.class)
public HashMap hello() {
HashMap hashMap = new HashMap();
User user1 = new User("liu","123");
User user2 = new User("zhang","456");
hashMap.put("u1",user1);
hashMap.put("u2",user2);
return hashMap;
}

在controller中声明视图   自己看下结果吧。

利用@jsonView注解来实现自定义返回字段的更多相关文章

  1. FastJson序列化Json自定义返回字段,普通类从spring容器中获取bean

    前言: 数据库的字段比如:price:1 ,返回需要price:1元. 这时两种途径修改: ① 比如sql中修改或者是在实体类转json前遍历修改. ②返回json,序列化时候修改.用到的是fastj ...

  2. Laravel Eloquent 自定义返回字段

    返回指定字段 Book::select("price", "name")->all(); 返回关系字段关联的属性 Book::select("p ...

  3. 使用@JsonView注解控制返回的Json属性

    我也是刚看到原来还可以这么玩,但是我还是习惯使用Dto,我总感觉这样做的话实体类耦合程度有点高.还是记录以下,万一今后用到了呢 ⒈在实体类中使用接口来声明该实体类的多个视图. ⒉在实体类的属性get方 ...

  4. Spring Boot 自动配置的原理、核心注解以及利用自动配置实现了自定义 Starter 组件

    本章内容 自定义属性快速入门 外化配置 自动配置 自定义创建 Starter 组件 摘录:读书是读完这些文字还要好好用心去想想,写书也一样,做任何事也一样 图 2 第二章目录结构图 第 2 章 Spr ...

  5. 自定义JSON返回字段

    今天看到一篇文章,里面介绍了如何自定义返回json字段,感觉挺好用的,这里学习一下. 实现工具类: /** * @author fengzp * @date 17/2/20上午10:34 * @ema ...

  6. passback_params 支付回调的 原样返回字段 自定义字段的存放字段

    开放平台文档中心 https://docs.open.alipay.com/204/105465/ passback_params String 否 512 公用回传参数,如果请求时传递了该参数,则返 ...

  7. EntityFramework Core 1.1+ Backing Fields(返回字段)

    前言 通过我发表的博文可知最近一段时间会将持续讲解EntityFramework Core特性,在此之前我提到过Backing Fields,回头翻了翻感觉写的还不够好,于是乎再来讲解一番,也是自己再 ...

  8. 深入JAVA注解(Annotation):自定义注解 (转)

    原文出自:http://blog.csdn.net/yjclsx/article/details/52101922 一.基础知识:元注解 要深入学习注解,我们就必须能定义自己的注解,并使用注解,在定义 ...

  9. Django学习笔记第十二篇--关于自定义数据库字段数据类型

    一.需求背景: django的models模块提供了很多数据字段的数据类型field,但是总有写奇葩需求不能依靠默认字段满足,所以需要自定义数据数据库数据字段类型.所有的自定义field应该在app路 ...

随机推荐

  1. Activiti流程编辑器针对自定义用户角色表优化改造

    本文目的: 针对自定义的用户.角色表,对Activiti的在线流程设计器进行优化改造,使之能直接在图形界面上完成对节点办理人.候选人.候选组的配置,不需要先去查数据库中的用户ID.角色ID等信息再填入 ...

  2. [转帖]IIS内虚拟站点配置信息说明

    web.config配置详细说明 https://www.cnblogs.com/zhangxiaolei521/p/5600607.html 原作者总结的很详细 但是没有完全的看完 自己对IIS 的 ...

  3. Qt__QWidget::update()与Qwidget::repaint()的区别

    QT事件的产生 1.操作系统产生 操作系统将获取的事件,比如鼠标按键,键盘按键等keyPressEvent,keyReleaseEvent,mousePressEvent,mouseReleaseEv ...

  4. React 组件

    <!DOCTYPE html><html><head lang="en"> <meta charset="UTF-8" ...

  5. charles代理以及关于其抓取https信息的操作

    一直没有写一篇关于charles的文章来记录,但是发现偶尔还是会忘记,所以还是记一下,查起来比较方便. 首先在安装了charles之后默认的本地代理地址是 127.0.0.1:8888这个地址.如果希 ...

  6. Java多线程之原子性 volatile、atomicInteger测试

    原文链接:http://www.cnblogs.com/zhengbin/p/5653051.html 一.补充概念 1.什么是线程安全性? <Java Concurrency in Pract ...

  7. delphi中ini 文件操作记要(1): 使用 TIniFile

    unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms ...

  8. python之tkinter使用-滚动条

    # GUI:tkinter使用 # 通过调节滚动条改变标签中字体大小 import tkinter as tk def resize(ev=None): '''改变label字体大小''' label ...

  9. timescale 时间尺度

    1 `timescale为模块指定参考时间单位 `timescale<reference_time_unit>/<time_precision> 2 module endmou ...

  10. 学习笔记之form表单

    form表单提交的数据 是字典类型 这样 方便在create时候 直接解压