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


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 相关文章推荐
图解排序算法之希尔排序Java实现
Jun 26 Java/Android
SpringCloud的JPA连接PostgreSql的教程
Jun 26 Java/Android
Java基础之详解HashSet的使用方法
Jun 30 Java/Android
分析ZooKeeper分布式锁的实现
Jun 30 Java/Android
Spring中的使用@Async异步调用方法
Nov 01 Java/Android
JavaCV实现照片马赛克效果
Jan 22 Java/Android
Dubbo+zookeeper搭配分布式服务的过程详解
Apr 03 Java/Android
Java 垃圾回收超详细讲解记忆集和卡表
Apr 08 Java/Android
Android自定义双向滑动控件
Apr 19 Java/Android
Java实现扫雷游戏详细代码讲解
May 25 Java/Android
Android开发手册Chip监听及ChipGroup监听
Jun 10 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
Zend Framework教程之模型Model基本规则和使用方法
2016/03/04 PHP
php+mysql实现简单登录注册修改密码网页
2016/11/30 PHP
JavaScript中为元素加上name属性的方法
2011/05/09 Javascript
JavaScript 异常处理 详解
2015/02/06 Javascript
最流行的Node.js精简型和全栈型开发框架介绍
2015/02/26 Javascript
JAVASCRIPT代码编写俄罗斯方块网页版
2015/11/26 Javascript
jqGrid 学习笔记整理——进阶篇(一 )
2016/04/17 Javascript
微信小程序开发图片拖拽实例详解
2017/05/05 Javascript
Angular获取手机验证码实现移动端登录注册功能
2017/05/17 Javascript
深入理解React Native原生模块与JS模块通信的几种方式
2017/07/24 Javascript
JS非空验证及邮箱验证的实例
2017/08/11 Javascript
JavaScript设计模式之职责链模式应用示例
2018/08/07 Javascript
在vue中多次调用同一个定义全局变量的实例
2018/09/25 Javascript
layui的数据表格+springmvc实现搜索功能的例子
2019/09/28 Javascript
微信小程序实现点击按钮后修改颜色
2019/12/05 Javascript
element-ui中dialog弹窗关闭按钮失效的解决
2020/09/22 Javascript
JavaScript实现切换多张图片
2021/01/27 Javascript
python自动化测试之连接几组测试包实例
2014/09/28 Python
python通过自定义isnumber函数判断字符串是否为数字的方法
2015/04/23 Python
用C++封装MySQL的API的教程
2015/05/06 Python
Python面向对象基础入门之编码细节与注意事项
2018/12/11 Python
python实现飞机大战游戏
2020/10/26 Python
OpenCV 边缘检测
2019/07/10 Python
解决django的template中如果无法引用MEDIA_URL问题
2020/04/07 Python
Python Selenium截图功能实现代码
2020/04/26 Python
canvas粒子动画背景的实现示例
2018/09/03 HTML / CSS
深入了解canvas在移动端绘制模糊的问题解决
2019/04/30 HTML / CSS
德国游戏机商店:Konsolenkost
2019/12/08 全球购物
J2EE面试题大全
2016/08/06 面试题
应届毕业生个人自荐信范文
2013/11/30 职场文书
养殖项目策划书范文
2014/01/13 职场文书
管理学院毕业生自荐信范文
2014/03/10 职场文书
鸟的天堂导游词
2015/01/31 职场文书
大队委员竞选演讲稿
2015/11/20 职场文书
mysql中varchar类型的日期进行比较、排序等操作的实现
2021/11/17 MySQL
Python中super().__init__()测试以及理解
2021/12/06 Python