实体类或对象序列化时,忽略为空属性的操作


Posted in Java/Android onJune 30, 2021

第一种,在配置文件配置

在application.xml直接配置,这种方式是全局配置,所有返回给前端对象的属性为null或""都不进行序列化;

spring: 
  jackson:
    #实体类转json时字段为null不参与序列化
    default-property-inclusion: NON_EMPTY

default-property-inclusion 常用的4种类型

  • ALWAYS 默认
  • NON_DEFAULT 属性为默认值不序列化
  • NON_EMPTY 属性为 “” 或者为NULL都不序列化
  • NON_NULL 属性为NULL时不序列化

第二种,给每个类单独设置

给为空时需要忽略序列化的对象属性加 @JsonInclude(Include.NON_NULL),也可以直接加到类上,表示一整个对象的属性为null时都不参与序列化;

@JsonInclude 括号里面可以设置不同的类型

  • Include.Include.ALWAYS 默认
  • Include.NON_DEFAULT 属性为默认值不序列化
  • Include.NON_EMPTY 属性为 “” 或者为NULL都不序列化
  • Include.NON_NULL 属性为NULL时不序列化

如果配置了全局,又给某个对象进行注解方式的设置,注解方式会覆盖全局的设置。

SpringBoot2.x 不反回空值属性

由于有的时候我们返回的数据中存在属性没有值得情况,或者是属性的值为空白字符串,这会浪费网络流量,又或者是前端框架存在的bug会导致null值或者是空白字符串在渲染的时候会报错。

处理方式

第一种

全局的方式:在SpringBoot的配置文件中添加以下属性,即可达到全局过滤

spring.jackson.default-property-inclusion=non_empty

第二种

局部的方式:在返回的实体类属性或者是类名上添加以下注解,即可达到过滤效果

@JsonInclude(JsonInclude.Include.NON_EMPTY)

注意

这种方式对于空集合也是成立的。属性一共有如下值可选

  • Include.Include.ALWAYS 默认
  • Include.NON_DEFAULT 属性为默认值不序列化
  • Include.NON_EMPTY 属性为 空(“”) 或者为 NULL 都不序列化
  • Include.NON_NULL 属性为NULL 不序列化

以上为个人经验,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Java/Android 相关文章推荐
解决SpringCloud Feign传对象参数调用失败的问题
Jun 23 Java/Android
Java 数组内置函数toArray详解
Jun 28 Java/Android
java固定大小队列的几种实现方式详解
Jul 15 Java/Android
idea 在springboot中使用lombok插件的方法
Aug 02 Java/Android
详解JAVA的控制语句
Nov 11 Java/Android
mybatis源码解读之executor包语句处理功能
Feb 15 Java/Android
Java基于Dijkstra算法实现校园导游程序
Mar 17 Java/Android
Java中API的使用方法详情
Apr 06 Java/Android
Java 深入探究讲解简单工厂模式
Apr 07 Java/Android
Java 垃圾回收超详细讲解记忆集和卡表
Apr 08 Java/Android
Spring Data JPA框架自定义Repository接口
Apr 28 Java/Android
mybatis-plus模糊查询指定字段
Apr 28 Java/Android
Spring mvc是如何实现与数据库的前后端的连接操作的?
Jun 30 #Java/Android
HashMap实现保存两个key相同的数据
Jun 30 #Java/Android
spring boot项目application.properties文件存放及使用介绍
springboot项目以jar包运行的操作方法
Springboot使用Spring Data JPA实现数据库操作
Jun 30 #Java/Android
如何给HttpServletRequest增加消息头
解决ObjectMapper.convertValue() 遇到的一些问题
Jun 30 #Java/Android
You might like
yiic命令时提示“php.exe”不是内部或外部命令的解决方法
2014/12/18 PHP
php+mysqli实现批量执行插入、更新及删除数据的方法
2015/01/29 PHP
Laravel统一错误处理为JSON的方法介绍
2020/10/18 PHP
php中array_fill函数的实例用法
2021/03/02 PHP
javascript 鼠标滚轮事件
2009/04/09 Javascript
JavaScript面向对象设计二 构造函数模式
2011/12/20 Javascript
JS.GetAllChild(element,deep,condition)使用介绍
2013/09/21 Javascript
判断js中各种数据的类型方法之typeof与0bject.prototype.toString讲解
2013/11/07 Javascript
用js控制组织结构图可以任意拖拽到指定位置
2014/01/17 Javascript
jQuery的选择器中的通配符使用介绍
2014/03/20 Javascript
javascript去除字符串中所有标点符号和提取纯文本的正则
2014/06/07 Javascript
css如何让浮动元素水平居中
2015/08/07 Javascript
jQuery Ajax 全局调用封装实例代码详解
2016/06/02 Javascript
JavaScript实现自动切换图片代码
2016/10/11 Javascript
浅析JavaScript中的特殊数据类型
2017/12/15 Javascript
使用vux实现上拉刷新功能遇到的坑
2018/02/08 Javascript
vue 使用原生组件上传图片的实例
2020/09/08 Javascript
vue-cli3 热更新配置操作
2020/09/18 Javascript
vue实现两个区域滚动条同步滚动
2020/12/13 Vue.js
[03:37]2015国际邀请赛第四日现场精彩集锦
2015/08/08 DOTA
python使用wxpython开发简单记事本的方法
2015/05/20 Python
Python中逗号的三种作用实例分析
2015/06/08 Python
Python实现计算两个时间之间相差天数的方法
2017/05/10 Python
python 获取键盘输入,同时有超时的功能示例
2018/11/13 Python
Python matplotlib生成图片背景透明的示例代码
2019/08/30 Python
Python字符串中删除特定字符的方法
2020/01/15 Python
德国低价购买灯具和家具网站:Style-home.de
2016/11/25 全球购物
巴西手表购物网站:eclock
2019/03/19 全球购物
后备干部培训方案
2014/05/22 职场文书
学习礼仪心得体会
2014/09/01 职场文书
2014幼儿园教师师德师风演讲稿
2014/09/10 职场文书
村主任个人对照检查材料
2014/10/01 职场文书
祝福语集锦:给满月宝宝的祝福语
2019/11/20 职场文书
Python将CSV文件转化为HTML文件的操作方法
2021/06/30 Python
tomcat下部署jenkins的方法
2022/05/06 Servers