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


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 相关文章推荐
eclipse创建项目没有dynamic web的解决方法
Jun 24 Java/Android
springboot 启动如何排除某些bean的注入
Aug 02 Java/Android
Java比较两个对象中全部属性值是否相等的方法
Aug 07 Java/Android
java调用Restful接口的三种方法
Aug 23 Java/Android
聊聊SpringBoot自动装配的魔力
Nov 17 Java/Android
SpringDataJPA实体类关系映射配置方式
Dec 06 Java/Android
JVM的类加载器和双亲委派模式你了解吗
Mar 13 Java/Android
Spring事务管理下synchronized锁失效问题的解决方法
Mar 31 Java/Android
Android自定义双向滑动控件
Apr 19 Java/Android
java开发双人五子棋游戏
May 06 Java/Android
阿里面试Nacos配置中心交互模型是push还是pull原理解析
Jul 23 Java/Android
SpringBoot Http远程调用的方法
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
一个简单的PHP入门源程序
2006/10/09 PHP
PHP array操作10个小技巧分享
2011/06/23 PHP
Laravel框架学习笔记(一)环境搭建
2014/10/15 PHP
php中mkdir函数用法实例分析
2014/11/15 PHP
ThinkPHP里用U方法调用js文件实例
2015/06/18 PHP
详解PHP素材图片上传、下载功能
2019/04/12 PHP
Javascript解决常见浏览器兼容问题的12种方法
2010/01/04 Javascript
基于jquery实现的可以编辑选择的下拉框的代码
2010/11/19 Javascript
动态的创建一个元素createElement及删除一个元素
2014/01/24 Javascript
JS 删除字符串最后一个字符的实现代码
2014/02/20 Javascript
jQuery实现可编辑的表格实例讲解(2)
2015/09/17 Javascript
在一个页面实现两个zTree联动的方法
2017/12/20 Javascript
vue 登录滑动验证实现代码
2018/08/24 Javascript
javascript实现的时间格式加8小时功能示例
2019/06/13 Javascript
vue 需求 data中的数据之间的调用操作
2020/08/05 Javascript
JavaScript实现图片放大预览效果
2020/11/02 Javascript
Python3基础之基本运算符概述
2014/08/13 Python
Python装饰器使用实例:验证参数合法性
2015/06/24 Python
Python中遇到的小问题及解决方法汇总
2017/01/11 Python
Python进程间通信Queue实例解析
2018/01/25 Python
tf.truncated_normal与tf.random_normal的详细用法
2018/03/05 Python
python+unittest+requests实现接口自动化的方法
2018/11/29 Python
python实现飞机大战小游戏
2019/11/08 Python
Python faker生成器生成虚拟数据代码实例
2020/07/20 Python
THE OUTNET美国官网:国际设计师品牌折扣网站
2017/03/07 全球购物
英国手工布艺沙发在线购买:Sofas & Stuff
2018/03/02 全球购物
省优秀教师事迹材料
2014/01/30 职场文书
导游词之山海关
2019/12/10 职场文书
Laravel中获取IP的真实地理位置
2021/04/01 PHP
PHP对接阿里云虚拟号的实现(号码隐私保护)
2021/04/06 PHP
PyTorch 如何检查模型梯度是否可导
2021/06/05 Python
Java并发编程必备之Future机制
2021/06/30 Java/Android
15个值得收藏的JavaScript函数
2021/09/15 Javascript
MongoDB数据库之添删改查
2022/04/26 MongoDB
python解析json数据
2022/04/29 Python
css清除浮动clearfix:after的用法详解(附完整代码)
2023/05/21 HTML / CSS