SpringBoot注解--08--注解@JsonInclude

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • @JsonInclude注解
        • 是jackSon中最常用的注解之一,是为==实体类在接口序列化返回值时增加规则的注解==
    • 1.@JsonInclude用法
    • 2.@JsonInclude注解中的规则有
  • 案例
    • 需求:用mybatis-plus查询指定字段,且为null的字段去除
    • 1.用户实体类:User
    • 2.controller
    • 3.前端表现
        • 不加注解@JsonInclude
        • 加上注解@JsonInclude


@JsonInclude注解

  • jackson包提供的json序列化方法,已经集成于Springboot2.0中,此方法的配置意在可以对实体json序列化的时候进行对应的数值处理。
是jackSon中最常用的注解之一,是为实体类在接口序列化返回值时增加规则的注解

1.@JsonInclude用法

例如,一个接口需要过滤掉返回值为null的字段,即值为null的字段不返回,可以在实体类中增加如下注解

// 在类上加入@JsonInclude(value = JsonInclude.Include.NON_NULL),表明该类为NULL的字段不参加序列化!
@JsonInclude(JsonInclude.Include.NON_NULL)
  1. 将该标记放在属性上,如果该属性为NULL则不参与序列化 !

  2. 如果放在类上边,那对这个类的全部属性起作用 !

2.@JsonInclude注解中的规则有

  • ALWAYS // 默认策略,任何情况都执行序列化, 即默认返回全部字段
  • NON_NULL // 非空 属性为NULL 不序列化 ,即值为null的字段不返回
  • NON_ABSENT // null的不会序列化,但如果类型是AtomicReference,依然会被序列化
  • NON_EMPTY // null、集合数组等没有内容、空字符串等,都不会被序列化
  • NON_DEFAULT // 如果字段是默认值,就不会被序列化
  • CUSTOM // 此时要指定valueFilter属性,该属性对应一个类,用来自定义判断被JsonInclude修饰的字段是否序列化
  • USE_DEFAULTS //当JsonInclude在类和属性上都有时,优先使用属性上的注解,此时如果在序列化的get方法上使用了JsonInclude,并设置为USE_DEFAULTS,就会使用类注解的设置

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

案例

需求:用mybatis-plus查询指定字段,且为null的字段去除

  • 1如下看到非常多的用户信息,比如我们要用mybatis查询指定用户字段怎么查询呢,就得用@JsonInclude()注解了

1.用户实体类:User

/*** 用户表*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@TableName(value = "tb_user")
@JsonInclude(JsonInclude.Include.NON_NULL)
public class User implements Serializable {/*** 主键*/@TableId(value = "id", type = IdType.INPUT)private Long id;/*** 用户编号*/@TableField(value = "code")private String code;/*** 账号*/@TableField(value = "account")private String account;/*** 密码*/@TableField(value = "password")private String password;/*** 手机*/@TableField(value = "phone")private String phone;/*** 昵称*/@TableField(value = "name")private String name;/*** 真名*/@TableField(value = "real_name")private String realName;/*** 头像*/@TableField(value = "avatar")private String avatar;/*** 邮箱*/@TableField(value = "email")private String email;/*** 生日*/@TableField(value = "birthday")private Date birthday;/*** 性别*/@TableField(value = "sex")private Short sex;/*** 创建时间*/@TableField(value = "create_time")private Date createTime;/*** 修改时间*/@TableField(value = "update_time")private Date updateTime;/*** 状态(0:不可用,1:可用)*/@TableField(value = "status")private Integer status;/*** 是否已删除*/@TableField(value = "is_deleted")private Integer isDeleted;private static final long serialVersionUID = 1L;
}

2.controller

@Slf4j
@RestController
public class AudienceController {/*** 根据id查询用户详情*/@GetMapping("/findUserInfoDetails/{id}")public Result<Object> findUserInfoDetails(@PathVariable("id") Long userId){return Result.ok(userService.findUserInfoDetails(userId));}
}

3.前端表现

不加注解@JsonInclude

在用户实体类上不加注解@JsonInclude()查询出来的数据如下:

  • 有看到我们只是查询我们想要的数据,但是那些我们没查询的数据也返回给我们了

在这里插入图片描述

加上注解@JsonInclude
  • .在用户实体类上加注解@JsonInclude()的查询结果
    在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/539003.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于51单片机的数控直流可调电源设计[proteus仿真]

181基于51单片机的数控直流可调电源设计[proteus仿真] 电源系统这个题目算是课程设计和毕业设计中常见的题目了&#xff0c;本期是一个基于51单片机的数控直流可调电源设计 需要的源文件和程序的小伙伴可以关注公众号【阿目分享嵌入式】&#xff0c;赞赏任意文章 2&#xffe…

代码学习记录17

随想录日记part17 t i m e &#xff1a; time&#xff1a; time&#xff1a; 2024.03.12 主要内容&#xff1a;今天的主要内容是二叉树的第六部分&#xff0c;主要涉及二叉搜索树的最小绝对差 &#xff1b;二叉搜索树中的众数&#xff1b;二叉树的最近公共祖先。 530.二叉搜索树…

分布式数据处理MapReduce简单了解

文章目录 产生背景编程模型统计词频案例 实现机制容错机制Master的容错机制Worker的容错机制 产生背景 MapReduce是一种分布式数据处理模型和编程技术&#xff0c;由Google开发&#xff0c;旨在简化大规模数据集的处理。产生MapReduce的背景&#xff1a; 数据量的急剧增长&…

SE园区综合实验(未补齐版)

实验要求&#xff1a; 1.局域网存在vlan10和vlan20两个业务vlan&#xff0c;ip网段分别对应192.168.1.0/24和192.168.2.0/24 2.业务vlan可以在所有链路上传输数据 3.sw1和sw2之间的直连链路上配置静态链路聚合实现链路冗余&#xff0c;并提高链路带宽 4.sw3为某接入点二次交…

windows批处理脚本(cmd指令)

一、简介 最早期的电脑系统是DOS系统&#xff0c;DOS系统只有一个黑漆漆的窗口&#xff0c;需要自己输入命令&#xff0c;所以学习命令是很有必要的&#xff0c;那么CMD命令大全是什么?直到今天的Windows系统&#xff0c;还是离不开DOS命令的操作。如今懂得使用windows批处理脚…

ThreadLocal基本原理

ThreadLocal基本原理 一、定义 ThreadLocal是java中所提供的线程本地存储机制&#xff0c;可以利用改机制将数据缓存在线程内部&#xff0c;该线程可以在任意时刻、任意方法中获取数据 二、底层原理 ThreadLocal底层是通过ThreadLocalMap来实现的&#xff0c;每个Thread对象中…

搭建Docker私有仓库registry

下载registry registry是Docker官方提供的仓库镜像 拉取镜像&#xff0c;不指定版本默认拉取最新版本镜像。 docker pull registry Using default tag: latest latest: Pulling from library/registry 79e9f2f55bf5: Pull complete 0d96da54f60b: Pull complete 5b27040df4…

linux环境基础开发工具2(gcc/g++ 、 make/ Makefile)

目录 Linux编译器-gcc/g使用 Linux项目自动化构建工具-make/Makefile Linux编译器-gcc/g使用 1. 背景知识 1.2 gcc/g -v 查看当前服务器的编译器版本 1.3 安装gcc / g sudo yum install -y gcc-c 1.4 预处理 -> 编译 -> 汇编 -> 链接 [wxqVM-4-9-centos Test]$ to…

cesium wall 扩散墙(动态立体墙效果 Primitive 方法)

cesium wall 扩散墙(动态立体墙效果)以下为源码直接复制可用 1、实现思路 1、此效果运用cesium 中 Primitive 方法,通过传入中心点、半径、顶点数、颜色来进行加载。 2、运用 Math 方法 对传进来的中心点、半径、定点数,来计算个顶点经纬度。 3、通过Primitive 方法中upda…

漏洞复现-锐捷Ruijie系列

漏洞复现-锐捷Ruijie 绕过身份验证锐捷EG易网关 Admin/admin锐捷EG2000GE存在命令执行漏洞锐捷网络股份有限公司校园网自助服务系统存在目录穿越漏洞ruijie-eg-guestisup-ip-rce.yml🗡锐捷RG-UAC应用网关前台RCE数据库审计系统存在后台 downloadTcpDumpFiles⽂件读取锐捷交换…

整数序列删除指定数字,其他数顺序不变

#include <stdio.h>//整数序列删除一个数&#xff0c;其他数顺序不变 int main() {int arr[50] {0};//int arr[50] {1,2,3,4,5};int n 0;int del 0;int i 0;int j 0;scanf("%d",&n);for(i 0;i < n;i)scanf("%d",&arr[i]);scanf(&q…

Win11系统启动VMware上虚拟机蓝屏解决办法

背景 最近有在做一个项目的过程中需要使用虚拟机&#xff0c;用原来装好的的Vmware14打开虚拟机&#xff0c;直接蓝屏了&#xff0c;尝试了如下几种方法来解决&#xff0c;最好用的就是第二种&#xff0c;直接下载最新版本(在软件管家中直接下载)。 虚拟机 目前常用的虚拟机软…