基本概念
- 序列化:Java对象转换为字节序列的过程
- 反序列化:字节序列恢复为Java对象的过程
主要作用
- 方便网络传输数据,TCP连接上只能传输二进制字节流(待定)
- 将pojo对象转变为字节流存储可以减少存储空间
- 可以通过序列化在进程间传递对象(待定)
pojo :Plain Old Java Object 简单的Java对象
常见序列化框架
JSON文本格式的序列化
json可以作为数据包传输,可以把java对象转化为json格式进行传输,
json是字节流
未完待续
JSON序列化和反序列化开源库
- FastJson:阿里巴巴旗下,独创快速算法,性能最高(后面发现高危漏洞)
- Gson:谷歌旗下,功能齐全
- Jackson:开源社区,优点小巧,缺点不能转换复杂的Java类型
xml格式的序列化
为什么要很多实体类要 implements Serialzable
- 一个类只有实现了 Serializable 接口,它的对象才是可序列化的。因此如果要序列化某些类的对象,这些类就必须实现 Serializable 接口。而实际上,Serializable 的源码是一个空接口,没有什么具体内容,它的目的只是简单的标识一个类的对象可以被序列化。(还未理解)
这里理解的是返回响应体实现了Serialzable,那携带对象的返回体就可以自动序列化后再传输
为什么要显示声明 serialVersionUID
serialVersionUID 的作用是验证序列化和反序列化的过程中,对象是否保持一致。所以在一般情况下我们需要显示的声明serialVersionUID。如果接受者加载的该对象的类的 serialVersionUID 和发送者的类版本号不同的话,反序列化会爆出 InvalidClassException 错误。(还未理解)