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


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 11 Java/Android
详解Java分布式事务的 6 种解决方案
Jun 26 Java/Android
详解Spring事件发布与监听机制
Jun 30 Java/Android
mybatis 解决从列名到属性名的自动映射失败问题
Jun 30 Java/Android
解决Swagger2返回map复杂结构不能解析的问题
Jul 02 Java/Android
gateway与spring-boot-starter-web冲突问题的解决
Jul 16 Java/Android
idea以任意顺序debug多线程程序的具体用法
Aug 30 Java/Android
Android Studio 计算器开发
May 20 Java/Android
Spring Security动态权限的实现方法详解
Jun 16 Java/Android
Java实现字符串转为驼峰格式的方法详解
Jul 07 Java/Android
spring 项目实现限流方法示例
Jul 15 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
解决phpmyadmin中缺少mysqli扩展问题的方法
2013/05/06 PHP
自己写的php中文截取函数mb_strlen和mb_substr
2015/02/09 PHP
php curl抓取网页的介绍和推广及使用CURL抓取淘宝页面集成方法
2015/11/30 PHP
php readfile下载大文件失败的解决方法
2017/05/22 PHP
Yii输入正确验证码却验证失败的解决方法
2017/06/06 PHP
php中通用的excel导出方法实例
2017/12/30 PHP
PHP使用JpGraph绘制折线图操作示例【附源码下载】
2019/10/18 PHP
JavaScript中的类继承
2010/11/25 Javascript
javascript学习笔记(五)正则表达式
2011/04/08 Javascript
javascript 拖动表格行实现代码
2011/05/05 Javascript
利用了jquery的ajax实现二级联互动菜单
2013/12/02 Javascript
用于deeplink的js方法(判断手机是否安装app)
2014/04/02 Javascript
使用Node.js实现一个简单的FastCGI服务器实例
2014/06/09 Javascript
JQuery调用绑定click事件的3种写法
2015/03/28 Javascript
AngularJS中的API(接口)简单实现
2016/07/28 Javascript
AngularJS实践之使用NgModelController进行数据绑定
2016/10/08 Javascript
vue-cli 脚手架基于Nightwatch的端到端测试环境的过程
2018/09/30 Javascript
jQuery实现的自定义轮播图功能详解
2018/12/28 jQuery
微信小程序实现通过双向滑动缩放图片大小的方法
2018/12/30 Javascript
vue v-for 使用问题整理小结
2019/08/04 Javascript
vue项目或网页上实现文字转换成语音播放功能
2020/06/09 Javascript
vue实现自定义多选按钮
2020/07/16 Javascript
[28:48]《真视界》- 2017年国际邀请赛
2017/09/27 DOTA
[59:42]Secret vs Alliacne 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/17 DOTA
Python GUI Tkinter简单实现个性签名设计
2018/06/19 Python
浅谈pycharm使用及设置方法
2019/09/09 Python
pip install 使用国内镜像的方法示例
2020/04/03 Python
Python容器类型公共方法总结
2020/08/19 Python
Python SMTP发送电子邮件的示例
2020/09/23 Python
购买澳大利亚最好的服装和内衣在线:BONDS
2016/10/14 全球购物
Lungolivigno Fashion官网:高级时装在线购物
2020/10/17 全球购物
2014年优秀班主任工作总结
2014/12/16 职场文书
关于召开会议的通知
2015/04/15 职场文书
写给纪委的违纪检讨书
2015/05/05 职场文书
如何利用Matlab制作一款真正的拼图小游戏
2021/05/11 Python
Win10 Anaconda安装python-pcl
2022/04/29 Servers