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


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 Shutdown Hook场景使用及源码分析
Jun 15 Java/Android
SpringAop日志找不到方法的处理
Jun 21 Java/Android
分析并发编程之LongAdder原理
Jun 29 Java/Android
springboot项目以jar包运行的操作方法
Jun 30 Java/Android
spring boot项目application.properties文件存放及使用介绍
Jun 30 Java/Android
Java并发编程必备之Future机制
Jun 30 Java/Android
使用logback实现按自己的需求打印日志到自定义的文件里
Aug 30 Java/Android
springboot如何接收application/x-www-form-urlencoded类型的请求
Nov 02 Java/Android
Android自定义scrollview实现回弹效果
Apr 01 Java/Android
Spring Security动态权限的实现方法详解
Jun 16 Java/Android
springboot创建的web项目整合Quartz框架的项目实践
Jun 21 Java/Android
maven 解包依赖项中的文件的解决方法
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
php使用array_rand()函数从数组中随机选择一个或多个元素
2014/04/28 PHP
PHP 面向对象程序设计(oop)学习笔记 (五) - PHP 命名空间
2014/06/12 PHP
WordPress中注册菜单与调用菜单的方法详解
2015/12/18 PHP
PHP Cli 模式设置进程名称的方法
2019/06/12 PHP
A标签中通过href和onclick传递的this对象实现思路
2013/04/19 Javascript
Jquery获取元素的父容器对象示例代码
2014/02/10 Javascript
JS数组array元素的添加和删除方法代码实例
2015/06/01 Javascript
jQuery+css实现的蓝色水平二级导航菜单效果代码
2015/09/11 Javascript
深入学习JavaScript的AngularJS框架中指令的使用方法
2016/03/05 Javascript
jQuery Ajax 实例代码 ($.ajax、$.post、$.get)
2016/04/29 Javascript
JS Attribute属性操作详解
2016/05/19 Javascript
javascript中异常处理案例(推荐)
2016/10/03 Javascript
JavaScript中使用import 和require打包后实现原理分析
2018/03/07 Javascript
JS获取今天是本月第几周、本月共几周、本月有多少天、是今年的第几周、是今年的第几天的示例代码
2018/12/05 Javascript
在Vue项目中引入JQuery-ui插件的讲解
2019/01/27 jQuery
解决Vue调用springboot接口403跨域问题
2019/09/02 Javascript
原生js滑动轮播封装
2020/07/31 Javascript
微信小程序实现多张图片上传功能
2020/11/18 Javascript
Python变量和字符串详解
2017/04/29 Python
Django 登陆验证码和中间件的实现
2018/08/17 Python
不归路系列:Python入门之旅-一定要注意缩进!!!(推荐)
2019/04/16 Python
Python3.5 Json与pickle实现数据序列化与反序列化操作示例
2019/04/29 Python
Pandas数据离散化原理及实例解析
2019/11/16 Python
TensorFlow的reshape操作 tf.reshape的实现
2020/04/19 Python
Python中logging日志的四个等级和使用
2020/11/17 Python
如何利用CSS3制作3D效果文字具体实现样式
2013/05/02 HTML / CSS
CSS3——齿轮转动关键代码
2013/05/02 HTML / CSS
3个CCIE对一个工程师的面试题
2012/05/06 面试题
教育科学研究生自荐信
2013/10/09 职场文书
迟到检讨书大全
2014/01/25 职场文书
《鲁班和橹板》教学反思
2014/04/27 职场文书
机关干部四风问题自查报告及整改措施
2014/10/26 职场文书
2014年党建工作汇报材料
2014/10/27 职场文书
2015高考寄语集锦
2015/02/27 职场文书
python中opencv实现图片文本倾斜校正
2021/06/11 Python
Python机器学习之决策树和随机森林
2021/07/15 Javascript