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


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 相关文章推荐
解决Maven项目中 Invalid bound statement 无效的绑定问题
Jun 15 Java/Android
使用feign服务调用添加Header参数
Jun 23 Java/Android
springcloud之Feign超时问题的解决
Jun 24 Java/Android
Java常用函数式接口总结
Jun 29 Java/Android
解决Swagger2返回map复杂结构不能解析的问题
Jul 02 Java/Android
Java比较两个对象中全部属性值是否相等的方法
Aug 07 Java/Android
使用Spring处理x-www-form-urlencoded方式
Nov 02 Java/Android
深入解读Java三大集合之map list set的用法
Nov 11 Java/Android
SpringBoot2零基础到精通之异常处理与web原生组件注入
Mar 22 Java/Android
Java 超详细讲解设计模式之中的抽象工厂模式
Mar 25 Java/Android
Java版 简易五子棋小游戏
May 04 Java/Android
Java 死锁解决方案
May 11 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
AJAX的跨域访问-两种有效的解决方法介绍
2013/06/22 PHP
php判断页面是否是微信打开的示例(微信打开网页)
2014/04/25 PHP
php根据年月获取当月天数及日期数组的方法
2016/11/30 PHP
PHP递归实现快速排序的方法示例
2017/12/18 PHP
jquery URL参数判断,确定菜单样式
2010/05/31 Javascript
flexigrid 类似ext grid的JS表格代码
2010/07/17 Javascript
js中查找最近的共有祖先元素的实现代码
2010/12/30 Javascript
用JQuery模仿淘宝的图片放大镜显示效果
2011/09/15 Javascript
js出生日期 年月日级联菜单示例代码
2014/01/10 Javascript
js使用循环清空某个div中的input标签值
2014/09/29 Javascript
js实现顶部可折叠的菜单工具栏效果实例
2015/05/09 Javascript
js基础知识(公有方法、私有方法、特权方法)
2015/11/06 Javascript
JavaScript接口的实现三种方式(推荐)
2016/06/14 Javascript
JavaScript学习总结(一) ECMAScript、BOM、DOM(核心、浏览器对象模型与文档对象模型)
2018/01/07 Javascript
Vue中的scoped实现原理及穿透方法
2018/05/15 Javascript
基于three.js实现的3D粒子动效实例代码
2019/04/09 Javascript
python读取TXT到数组及列表去重后按原来顺序排序的方法
2015/06/26 Python
python实现textrank关键词提取
2018/06/22 Python
Python中应该使用%还是format来格式化字符串
2018/09/25 Python
python判断列表的连续数字范围并分块的方法
2018/11/16 Python
python实现向微信用户发送每日一句 python实现微信聊天机器人
2019/03/27 Python
python3.5安装python3-tk详解
2019/04/26 Python
Python 生成器,迭代,yield关键字,send()传参给yield语句操作示例
2019/10/12 Python
浅谈keras通过model.fit_generator训练模型(节省内存)
2020/06/17 Python
TensorFlow的环境配置与安装教程详解(win10+GeForce GTX1060+CUDA 9.0+cuDNN7.3+tensorflow-gpu 1.12.0+python3.5.5)
2020/06/22 Python
css3和jquery实现自定义checkbox和radiobox组件
2014/04/22 HTML / CSS
在HTML5中如何使用CSS建立不可选的文字
2014/10/17 HTML / CSS
周仰杰(JIMMY CHOO)英国官方网站:闻名世界的鞋子品牌
2018/10/28 全球购物
介绍一下SOA和SOA的基本特征
2016/02/24 面试题
员工培训邀请函
2014/02/02 职场文书
公交公司毕业生求职信
2014/02/15 职场文书
学校端午节活动总结
2015/02/11 职场文书
敬业奉献模范事迹材料(2016精选版)
2016/02/26 职场文书
先进个人事迹材料(2016推荐版)
2016/03/01 职场文书
Redis性能监控的实现
2021/07/09 Redis
Android Studio 计算器开发
2022/05/20 Java/Android