介绍实体类或对象序列化时,忽略为空属性的操作(@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 就是反序列化之后的结果
相关文章
|
12天前
|
存储 Java 开发者
Java编程中的对象序列化与反序列化
【9月更文挑战第20天】在本文中,我们将探索Java编程中的一个核心概念——对象序列化与反序列化。通过简单易懂的语言和直观的代码示例,你将学会如何将对象状态保存为字节流,以及如何从字节流恢复对象状态。这不仅有助于理解Java中的I/O机制,还能提升你的数据持久化能力。准备好让你的Java技能更上一层楼了吗?让我们开始吧!
|
21天前
|
存储 Java
Java编程中的对象序列化与反序列化
【9月更文挑战第12天】在Java的世界里,对象序列化与反序列化是数据持久化和网络传输的关键技术。本文将带你了解如何通过实现Serializable接口来标记一个类的对象可以被序列化,并探索ObjectOutputStream和ObjectInputStream类的使用,以实现对象的写入和读取。我们还将讨论序列化过程中可能遇到的问题及其解决方案,确保你能够高效、安全地处理对象序列化。
|
2月前
|
存储 Java
Java编程中的对象序列化与反序列化
【8月更文挑战第28天】在Java世界中,对象序列化与反序列化是数据持久化和网络传输的关键技术。本文将深入浅出地探讨这一过程,带你领略其背后的原理及应用,让你的程序在数据的海洋中自由航行。
|
1月前
|
存储 Java
Java编程中的对象序列化与反序列化
【9月更文挑战第2天】在Java的世界里,对象序列化和反序列化就像是给数据穿上了一件隐形的斗篷。它们让数据能够轻松地穿梭于不同的系统之间,无论是跨越网络还是存储在磁盘上。本文将揭开这层神秘的面纱,带你领略序列化和反序列化的魔法,并展示如何通过代码示例来施展这一魔法。
17 0
|
2月前
|
存储 安全 Java
揭秘Java序列化神器Serializable:一键解锁对象穿越时空的超能力,你的数据旅行不再受限,震撼登场!
【8月更文挑战第4天】Serializable是Java中的魔术钥匙,开启对象穿越时空的能力。作为序列化的核心,它让复杂对象的复制与传输变得简单。通过实现此接口,对象能被序列化成字节流,实现本地存储或网络传输,再通过反序列化恢复原状。尽管使用方便,但序列化过程耗时且存在安全风险,需谨慎使用。
38 7
|
3月前
|
存储 Java
JaveSE—IO流详解:对象输入输出流(序列化及反序列化)
JaveSE—IO流详解:对象输入输出流(序列化及反序列化)
|
3月前
|
存储 Java 开发者
Java中的对象序列化详解
Java中的对象序列化详解
|
4月前
|
JSON Java API
jackson序列化和反序列化中的注解和扩展点大全【收藏】
jackson序列化和反序列化中的注解和扩展点大全【收藏】
|
3月前
|
存储 JSON 数据库
项目管理定义问题之什么是序列化大对象的值对象数据库形态
项目管理定义问题之什么是序列化大对象的值对象数据库形态
|
4月前
|
XML 机器学习/深度学习 存储
技术心得:对象的序列化存入数据库,与反序列化
技术心得:对象的序列化存入数据库,与反序列化
36 0
下一篇
无影云桌面