关于序列化和编码这两个概念的疑惑

2022-03-07 13:30:48 +08:00
 x97bgt

一直搞不清序列化和编码这两个概念,感觉有很多东西混在了一起。。。

现在我的理解是这样

而 json/xml 最后用 unicode 编码成字节流(可能有做一些压缩空格之类的预处理),才到网络中传输。

不知道我这样理解对不对?

3637 次点击
所在节点    程序员
25 条回复
cheng6563
2022-03-07 17:58:28 +08:00
程序里的原始数据,比如 c 语言不含指针的 struct ,其他语言也能根据顺序按 byte 凑合读,所以无需编码序列化就可以直接丢给其他语言。

Java 对象的原始数据,只有 jvm 认,甚至里面一定有一堆指针之类关系到运行时的东西,丢给另一个 JVM 进程也没法读。所以必须要先把指针什么的都转成值,这就是序列化。编码指的就是序列化之后的数据是怎么存的,是存成 json 或者 xml 。
Protobuf 可以看做跨平台优化的 struct
3dwelcome
2022-03-07 18:10:49 +08:00
以前的 word 存盘文档就是序列化,直接把内存对象输出到磁盘。

等加载 doc 的时候,再反向序列化回来,变成内存对象。

在 web 领域很少用这些,你真的序列化后,就没办法和别人交换数据了。web api 大多被设计成 json ,因为不只是自己公司同事要读取,也要让别人也能方便读取。
zvl0reqglvd
2022-03-07 19:25:40 +08:00
编码是写代码,将数据按规律编写,
序列化是将对象转换成字节流,
反序列化是将字节流重新组装成对象。
wqhyw
2022-03-08 14:47:06 +08:00
kilasuelika
2022-03-08 16:05:23 +08:00
序列化一般特指计算机编程中对象的持久化。
编码的含义就广泛得多了,比如 DNA“编码”了遗传信息。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/838587

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX