2 回答

TA貢獻1825條經驗 獲得超6個贊
你的理解"序列化"的含義.
"序列化 (serialization)將對象的狀態(tài)信息轉換為可以存儲或傳輸的格式的過程。在序列化期間,對象將其當前狀態(tài)寫入到臨時或持久性存儲區(qū)。"
上面的解釋,涉及到兩個重要概念:存儲,傳輸.
存儲,傳輸的格式是什么?那就是字節(jié)流,或者說字節(jié)數組.
字符串,只是一種抽象,是對一段字節(jié)數組的邏輯含義的概括,比如,我給你四字節(jié)的字節(jié)數組,你認為這四個字節(jié)的數組是代表"字符串",還是代表"32整形值"呢?你當然不知道,這就需要提供這個四字節(jié)數組的人告訴你,他的這個四字節(jié)數組具體代表什么.
同樣,Stream 也只是一中抽象,Stream對象是一組對字節(jié)數組的操作,Stream對象內部使用字節(jié)數組存儲數據,對于不同的派生類FileStream,NetworkStream,都提供了自身優(yōu)化的方式來銜接內存中的字節(jié)數組與磁盤上或網絡IO設備上的字節(jié)數組.
json序列化后的實際對象應該是字節(jié)數組,而非字符串,只是為了便于人閱讀,才提供一定的方法可以將該字節(jié)數組轉換為可供人讀的字符串.
所以,對于你的第一個問題,不是為了通用性,而是對序列化過程的職責分離.至于拿到序列化字節(jié)數組后,你想用來干什么,就留給使用者去決定,這時候,你可以使用BinaryReader StreamReader TextReader等配合Encoding來將字節(jié)數組轉換成你想要的string,int32,double等.
Stream的作用,我在前面已經說過了,至于沒有這個東西的壞處就是:很多人會寫自己的 Stream.
- 2 回答
- 0 關注
- 503 瀏覽
添加回答
舉報