介绍实体类或对象序列化时,忽略为空属性的操作(@JsonInclude(JsonInclude.Include.NON_EMPTY))注解

简介: 介绍实体类或对象序列化时,忽略为空属性的操作(@JsonInclude(JsonInclude.Include.NON_EMPTY))注解

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站点击跳转浏览。


在说明这个问题之前,先讲解一下序列化这个知识点 ,因为前端的序列化和后端的序列化不太一样



为什么要进行序列化


    目的是为了对象可以跨平台存储,和进行网络传输。而我们进行跨平台存储和网络传输的方式就是IO,而我们的IO支持的数据格式就是字节数组。

因为我们单方面的只把对象转成字节数组还不行,因为没有规则的字节数组我们是没办法把对象的本来面目还原回来的,所以我们必须在把对象转成字节数组的时候就制定一种规则(序列化),那么我们从IO流里面读出数据的时候再以这种规则把对象还原回来(反序列化)。


后端序列化


Java 提供了一种对象序列化的机制,该机制中,一个对象可以被表示为一个字节序列,该字节序列包括该对象的数据、有关对象的类型的信息和存储在对象中数据的类型。

简而言之序列化是把Java对象转换为字节序列的过程

在后端我们大都使用 @JsonProperty(“”) 这个注解来实现序列化,将这个把属性的名称序列化另一个名称,就是和数据库中的属性对应起来

如果使用不当会造成一个问题,就是前端给对象赋值之后,前端并没有传递这个字段,但是后端在序列化的时候,会把那些没有传递的属性也进行序列化,不过该属性里面的值为null,会影响到前端的判断

这个时候可以用 @JsonInclude(JsonInclude.Include.NON_EMPTY)这个注解


@JsonInclude 括号里面可以设置不同的类型


Include.Include.ALWAYS 默认

Include.NON_DEFAULT 属性为默认值不序列化

Include.NON_EMPTY 属性为 “” 或者为NULL都不序列化

Include.NON_NULL 属性为NULL时不序列化


前端序列化


定义:将对象转换成字符串

    前端往往传递对象数据的时候需要序列化,是因为对象我们在存储的时候,存放的是堆空间,而在内存中存放的是一个指针,所以在取值的时候也是取到的指针,那么在向后端传值的时候,我们总不能传递一个指针过去吧,这时候就需要序列化一下这个对象,在后端接收到这个序列化的值之后,需要反序列化解析成一个对象。


var obj = {name:"zhangsan",age:10};
    var stringObj = JSON.stringify(obj);// stringObj 就是序列化之后的结果
    //相应的反序列化,把序列化之后的结果转化成结构体的过程
    var newObj = JSON.parse(stringObj);// newObj 就是反序列化之后的结果
相关文章
|
6天前
|
JSON Java API
GSON 泛型对象反序列化解决方案
GSON 泛型对象反序列化解决方案
|
6天前
|
消息中间件 存储 负载均衡
Kafka【付诸实践 01】生产者发送消息的过程描述及设计+创建生产者并发送消息(同步、异步)+自定义分区器+自定义序列化器+生产者其他属性说明(实例源码粘贴可用)【一篇学会使用Kafka生产者】
【2月更文挑战第21天】Kafka【付诸实践 01】生产者发送消息的过程描述及设计+创建生产者并发送消息(同步、异步)+自定义分区器+自定义序列化器+生产者其他属性说明(实例源码粘贴可用)【一篇学会使用Kafka生产者】
267 4
|
6月前
|
缓存 NoSQL fastjson
Shiro Session集群共享存入Redis中SimpleSession的transient 属性不能序列化
Shiro Session集群共享存入Redis中SimpleSession的transient 属性不能序列化
|
6天前
|
分布式计算 Java 大数据
IO流【Java对象的序列化和反序列化、File类在IO中的作用、装饰器模式构建IO流体系、Apache commons-io工具包的使用】(四)-全面详解(学习总结---从入门到深化)
IO流【Java对象的序列化和反序列化、File类在IO中的作用、装饰器模式构建IO流体系、Apache commons-io工具包的使用】(四)-全面详解(学习总结---从入门到深化)
56 0
|
6天前
|
JSON Android开发 数据格式
android 使用GSON 序列化对象出现字段被优化问题解决方案
android 使用GSON 序列化对象出现字段被优化问题解决方案
|
6天前
|
vr&ar
MFC序列化及反序列化对象
MFC序列化及反序列化对象
18 0
|
6天前
|
存储 JSON 运维
PowerShell 对象的序列化和反序列化
PowerShell 对象的序列化和反序列化
43 0
|
6天前
|
缓存 NoSQL Java
Spring Data Redis对象缓存序列化问题
在使用 Redis 时,有没有遇到同我一样,对象缓存序列化问题的呢?
74 6
Spring Data Redis对象缓存序列化问题
|
6天前
|
存储 Java
对象序列化流和对象反序列化流
对象序列化流和对象反序列化流
47 0
|
6天前
|
XML 存储 JSON
C# | 使用Json序列化对象时忽略只读的属性
将对象序列化成为Json字符串是一个使用频率非常高的功能。Json格式具有很高的可读性,同时相较于XML更节省空间。 在开发过程中经常会遇到需要保存配置的场景,比如将配置信息保存在配置类型的实例中,再将这个对象序列化成为Json字符串并保存。当需要加载配置时,则是读取Json格式的字符串再将其还原成配置对象。在序列化的过程中,默认会将所有公开的属性和字段都序列化进入Json字符串中,这其中也会包含只读的属性或字段,而只读的属性和字段在反序列化的过程中其实是无意义的,也就是说这一部分存储是多余的。 本文将讲解如何在执行Json序列化时,忽略掉那些只读的属性和字段。
67 0
C# | 使用Json序列化对象时忽略只读的属性