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


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
mybatis中sql语句CDATA标签的用法说明
Jun 30 Java/Android
每日六道java新手入门面试题,通往自由的道路
Jun 30 Java/Android
MyBatis配置文件解析与MyBatis实例演示
Apr 07 Java/Android
SpringCloud Function SpEL注入漏洞分析及环境搭建
Apr 08 Java/Android
Spring Boot 实现 WebSocket
Apr 30 Java/Android
使用Postman测试需要授权的接口问题
Jun 21 Java/Android
SpringBoot使用ip2region获取地理位置信息的方法
Jun 21 Java/Android
springboot读取resources下文件的方式详解
Jun 21 Java/Android
Java Spring Boot请求方式与请求映射过程分析
Jun 25 Java/Android
OpenFeign实现远程调用
Aug 14 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
nginx+php-fpm配置文件的组织结构介绍
2012/11/07 PHP
php获取指定范围内最接近数的方法
2015/06/02 PHP
关于laravel-admin ueditor 集成并解决刷新的问题
2019/10/21 PHP
一个加密JavaScript的开源工具PACKER2.0.2
2006/11/04 Javascript
jQuery的强大选择器小结
2009/12/27 Javascript
JAVASCRIPT实现的WEB页面跳转以及页面间传值方法
2010/05/13 Javascript
js 事件处理函数间的Event物件是否全等
2011/04/08 Javascript
JavaScript高级程序设计 XML、Ajax 学习笔记
2011/09/10 Javascript
原生js事件的添加和删除的封装
2014/07/01 Javascript
js实现图片和链接文字同步切换特效的方法
2015/02/20 Javascript
原生JavaScript编写俄罗斯方块
2015/03/30 Javascript
javascript 应用小技巧方法汇总
2015/07/05 Javascript
js获取鼠标位置实例详解
2015/12/09 Javascript
全面详细的jQuery常见开发技巧手册
2016/02/21 Javascript
微信小程序 配置文件详细介绍
2016/12/14 Javascript
详解VueJs异步动态加载块
2017/03/09 Javascript
ReactJs设置css样式的方法
2017/06/08 Javascript
JavaScript标准对象_动力节点Java学院整理
2017/06/27 Javascript
微信小程序中添加客服按钮contact-button功能
2018/04/27 Javascript
使用vue根据状态添加列表数据和删除列表数据的实例
2018/09/29 Javascript
使用Webpack提升Vue.js应用程序的4种方法(翻译)
2019/10/09 Javascript
vue-cli3 热更新配置操作
2020/09/18 Javascript
微信小程序实现首页弹出广告
2020/12/03 Javascript
python互斥锁、加锁、同步机制、异步通信知识总结
2018/02/11 Python
python删除某个字符
2018/03/19 Python
详谈python在windows中的文件路径问题
2018/04/28 Python
python实现大战外星人小游戏实例代码
2019/12/26 Python
TensorFlow2.1.0最新版本安装详细教程
2020/04/08 Python
Python爬虫之爬取淘女郎照片示例详解
2020/07/28 Python
一套中级Java程序员笔试题
2015/01/14 面试题
机关工会开展学习雷锋活动总结
2014/03/01 职场文书
菜篮子工程实施方案
2014/03/08 职场文书
高等教育专业自荐信范文
2014/03/26 职场文书
趣味运动会广播稿
2014/09/13 职场文书
上班迟到检讨书
2015/05/06 职场文书
Mac电脑OS系统下安装Nginx的详细教程
2022/04/14 Servers