序列化协议浅解——json、xml、protocol
json
{
"name":"wasi",
"age":"22"
}
优点
- 可读性高
缺点
- 编码长度大
xml
<?xml version="1.0" encoding="UTF-8"?>
<name>wasi</name>
<age>22</age>
优点
- 可读性高
缺点
- 编码长度大
protocol
// 二进制
0a 06 64 72 61 72 65 6e 40 50 1a 03 43 2b 2b 1a sf
11 24
优点
- 编码长度小
缺点
- 可读性低
总结
- 序列化就是把数据转换成协议的格式,再进行传输、存储;反序列化则将协议格式的数据转换成对应语言的数据
- 我理解:网络的应用层、运输层、网络层等,都是依次将上一层的数据内容按协议格式包装起来,网络层IP协议(运输层TCP(应用层HTTP(数据内容json/xml/protocol)))
- 不同的协议分多种角度判断使用
- 解析效率:速度,CPU成本
- 编码长度:序列化后的数据长度,影响网络带宽或存储成本
- 可读性:调试方便
- 编程语言:不同的编程语言,同样的序列化协议,速度会有区别
- 库的细节处理不一样,比如有些少用换行符,又比如
在google-gson当中,如果出现重复的引用,就是某个引用在数据对象中被添加了多次,gson会将内容复制,而fastJson会使用引用符号,而不是直接复制,这样更加省空间