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


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 23 Java/Android
使用feign服务调用添加Header参数
Jun 23 Java/Android
利用Java设置Word文本框中的文字旋转方向的实现方法
Jun 28 Java/Android
Java SSH 秘钥连接mysql数据库的方法
Jun 28 Java/Android
详细了解java监听器和过滤器
Jul 09 Java/Android
SpringBoot整合RabbitMQ的5种模式实战
Aug 02 Java/Android
Java 实战项目之家居购物商城系统详解流程
Nov 11 Java/Android
InterProcessMutex实现zookeeper分布式锁原理
Mar 21 Java/Android
Netty客户端接入流程NioSocketChannel创建解析
Mar 25 Java/Android
Android Studio 计算器开发
May 20 Java/Android
maven 解包依赖项中的文件的解决方法
Jul 15 Java/Android
AndroidStudio图片压缩工具ImgCompressPlugin使用实例
Aug 05 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
无线电波是什么?它是怎样传输的?
2021/03/01 无线电
PHP 存取 MySQL 数据库的一个例子
2006/10/09 PHP
PHP使用数组依次替换字符串中匹配项
2016/01/08 PHP
微信利用PHP创建自定义菜单的方法
2016/08/01 PHP
JavaScript语言对Unicode字符集的支持详解
2014/12/30 Javascript
JS实现仿QQ聊天窗口抖动特效
2015/05/10 Javascript
jquery ajax双击div可直接修改div中的内容
2016/03/04 Javascript
创建一个类Person的简单实例
2016/05/17 Javascript
微信小程序 数据访问实例详解
2016/10/08 Javascript
微信小程序 动态的设置图片的高度和宽度详解及实例代码
2017/02/24 Javascript
JavaScript数据结构之二叉树的遍历算法示例
2017/04/13 Javascript
基于vue2.0实现的级联选择器
2017/06/09 Javascript
bootstrapvalidator之API学习教程
2017/06/29 Javascript
bootstrap3中container与container_fluid外层容器的区别讲解
2017/12/04 Javascript
json对象及数组键值的深度大小写转换问题详解
2018/03/30 Javascript
使用vuepress搭建静态博客的示例代码
2019/02/14 Javascript
使用taro开发微信小程序遇到的坑总结
2019/04/08 Javascript
详解如何模拟实现node中的Events模块(通俗易懂版)
2019/04/15 Javascript
vue vantUI实现文件(图片、文档、视频、音频)上传(多文件)
2019/10/15 Javascript
重置Redux的状态数据的方法实现
2019/11/18 Javascript
ckeditor一键排版功能实现方法分析
2020/02/06 Javascript
Python操作MySQL数据库9个实用实例
2015/12/11 Python
django上传图片并生成缩略图方法示例
2017/12/11 Python
1分钟快速生成用于网页内容提取的xslt
2018/02/23 Python
Python迭代器与生成器用法实例分析
2018/07/09 Python
opencv python 傅里叶变换的使用
2018/07/21 Python
Python实现简易过滤删除数字的方法小结
2019/01/09 Python
python爬虫之爬取百度音乐的实现方法
2019/08/24 Python
PyCharm中如何直接使用Anaconda已安装的库
2020/05/28 Python
input file上传文件样式支持html5的浏览器解决方案
2012/11/14 HTML / CSS
Lookfantastic阿联酋官网:英国知名美妆护肤购物网站
2020/05/26 全球购物
android面试问题与答案
2016/12/27 面试题
2015年元旦文艺汇演主持词
2014/03/26 职场文书
公司领导班子群众路线四风问题对照检查材料
2014/10/02 职场文书
优秀党员个人总结
2015/02/14 职场文书
先进基层党组织主要事迹材料
2015/11/03 职场文书