2 回答
TA贡献1825条经验 获得超6个赞
你的理解"序列化"的含义.
"序列化 (serialization)将对象的状态信息转换为可以存储或传输的格式的过程。在序列化期间,对象将其当前状态写入到临时或持久性存储区。"
上面的解释,涉及到两个重要概念:存储,传输.
存储,传输的格式是什么?那就是字节流,或者说字节数组.
字符串,只是一种抽象,是对一段字节数组的逻辑含义的概括,比如,我给你四字节的字节数组,你认为这四个字节的数组是代表"字符串",还是代表"32整形值"呢?你当然不知道,这就需要提供这个四字节数组的人告诉你,他的这个四字节数组具体代表什么.
同样,Stream 也只是一中抽象,Stream对象是一组对字节数组的操作,Stream对象内部使用字节数组存储数据,对于不同的派生类FileStream,NetworkStream,都提供了自身优化的方式来衔接内存中的字节数组与磁盘上或网络IO设备上的字节数组.
json序列化后的实际对象应该是字节数组,而非字符串,只是为了便于人阅读,才提供一定的方法可以将该字节数组转换为可供人读的字符串.
所以,对于你的第一个问题,不是为了通用性,而是对序列化过程的职责分离.至于拿到序列化字节数组后,你想用来干什么,就留给使用者去决定,这时候,你可以使用BinaryReader StreamReader TextReader等配合Encoding来将字节数组转换成你想要的string,int32,double等.
Stream的作用,我在前面已经说过了,至于没有这个东西的坏处就是:很多人会写自己的 Stream.
- 2 回答
- 0 关注
- 484 浏览
添加回答
举报