- 1. 序列化的定义
- 2. HTTP协议
- 3. 常用的序列化协议
- 1. xml协议
- 2. Json协议
- 3. Protobuf协议
- 4. 理解JSON序列化
- 5. 常见的序列化方式
序列化是将对象的状态信息转换为可存储或可传输的格式的过程。在序列化期间,对象将其当前状态写入到临时或持久性存储区。以后,可以通过从存储区中读取或反序列化对象的状态,重新创建该对象。
序列化:将对象的状态信息转换为可存储或传输的格式的数据的过程。
反序列化:将可存储或传输的格式的数据转换为对象的状态信息的过程。
常见的序列化格式有:二进制格式、JSON、XML等。
2. HTTP协议HTTP协议早期专门用于传输超文本数据html,但是随着协议发展多元化,不限制数据格式。它是一个在传输层,基于TCP协议实现的应用层协议,使用的是字符串明文传输。
HTTP协议规定 POST 提交的数据必须放在消息主体中,但协议并没有规定数据必须使用什么编码方式。因此开发者可以自己决定消息主体的格式,只要最后发送的 HTTP 请求满足上面的格式就可以。数据发送出去后需要服务器端解析,服务端通常是根据请求头中的 Content-Type 字段得到请求中的消息主体是用何种方式编码,再对主体进行解析。
application/json:JSON 数据格式
application/xml:XML数据格式
3. 常用的序列化协议协议可以理解两个节点之间为了协同工作实现信息交换,协商一定的规则和约定。协议有流程规范和编码规范。编码规范就是我们通常所说的编解码,序列化。我们说的编码格式就是一种协议,比如JSON协议,XML协议。
1. xml协议xml是一种通用和轻量级的数据交换格式语言,是指可扩展标记语言(extensible markup language),以文本结构进行存储。它可以用来标记数据、定义数据类型,提供统一的方法来描述和交换,而且独立于程序语言或供应商的结构化数据。
和JSON一样,数据在序列化成字节流之前都转换成字符串。可读性强,性能差,异构系统、Open API类型的应用中常用。
2. Json协议Json是一种通用和轻量级的数据交换格式,也是以文本结构进行存储,是一种简单的消息格式,全称为JavaScript Object Notation。Json作为数据包格式传输时具有更高的效率,这是因为Json不像xml那样需要有严格的闭合标签,这就让有效数据量与总数据包比有着显著的提升,从而减少同等数据流量的情况下网络的传输压力!
将Java POJO对象转换成JSON结构化字符串。基于HTTP协议,在Web应用、移动开发中是常用的编码方式,因为JSON的可读性较强。但是它的性能稍差。
3. Protobuf协议Protobuf是Google开发的一种独立和轻量级的数据交换格式,以二进制结构进行存储,用于不同服务之间序列化数据。全称为Protocol Buffers,是一种轻便高效的结构化数据存储格式,可以用于结构化数据串行化,或者序列化,可用于通讯协议、数据存储等领域的语言无关、平台无关、可扩展的序列化结构数据格式。
4. 理解JSON序列化
HTTP协议是基于文本格式的,指的是协议的指令、状态是文本格式的,但是传输的东西可以是文本也可以是二进制。
如果我们在HTTP协议中设置Content-Type中设置application/json,则代表前端的请求数据是JSON字符串格式,服务端需要将JSON字符串转化为Java对象,这个过程就是反序列化。
同理,当我们想要将Java对象的数据响应给前端时,也需要将java对象序列化为JSON字符串,然后通过HTTP协议报文响应给前端。
5. 常见的序列化方式- java默认的序列化机制
- Json序列化方式
- XML序列化方式
- Protobuf序列化方式



