我目前不明白爲什麼我會選擇序列化一個對象,而不是隻做一個文件輸出,然後讓一個函數讀取該文件。從序列化對象中獲得什麼?爲什麼我會序列化一個對象而不是做文件輸出?
回答
使用經過W3C認可的數據交換格式,您幾乎可以在幾乎所有的編程語言中爲讀者和作者提供幾乎全面的支持,從而獲得了讀取和寫入對象數據的行業標準方式。
你的答案比我的好。它應該是第一位的。 – rpax
序列化可以很容易地存儲對象 和對象內部的狀態(如果它們是Serializable
而不是標記爲transient
)。
你的情況好處:
想象一下,你有很多不同的類。也許編碼的通用File-to-class
解析器難度比readObject()
當你serialize
的object
,要複製的實際byte
數據在內存中爲stream
。當你回傳到object
的de-serialize
時,你會得到相同的對象,包括它的內部對象ID,如果你已經將對象的屬性寫入文件,然後再讀入並解釋它,則不會得到該ID。
這意味着,如果你serialize
的objects
是reference
相互集合,當你de-serialize
他們,他們將仍然維持其references
給對方。這對調試程序也很好。如果發生異常,您可以在用戶計算機上創建內存轉儲,並且如果它們將其發送給您,則可以直接看到內存中的內容以及可能導致的問題。
它也更容易serialize
複雜object
有許多屬性爲stream
比它要建立一些string
代表性的數據,你將有回讀,分析和構建新的object
它。
真的你得到的是,它更容易/更快,更好的調試。
- 1. C#,爲什麼XmlSerializer會序列化基礎對象而不是接口?
- 2. 爲什麼JsonConvert不會反序列化這個對象?
- 3. 爲什麼兩個數字對象出現而不是一個?
- 4. 什麼是對象圖和我如何序列化一個
- 5. 在序列化對象列表時輸出id而不是完整對象
- 6. 爲什麼我可以序列化屬性而不是對象本身?
- 7. 爲什麼我的輸出轉到cout而不是文件?
- 8. 當序列化對象時,BOOST_SERIALIZATION_NVP會做什麼?
- 9. JSON.NET不會反序列化爲我的對象,拋出一個異常
- 10. 我想將一個xml文件序列化爲java對象
- 11. 如何找出爲什麼一個對象不能被JSON序列化?
- 12. 序列化對象文件輸出爲空
- 13. 我序列化了一個C++對象,如何爲它分配內存而不知道它是什麼類型?
- 14. 序列化對象到一個文件
- 15. 爲什麼如果我不實現序列化我仍然可以序列化一個對象?
- 16. 爲什麼我不能序列化一個結構體中的對象?
- 17. 當我使用Spidermonkey時,爲什麼我的輸出是[對象對象]而不是[Id:id_value]
- 18. 爲什麼我得到[對象對象]而不是JSON?
- 19. 序列化一個對象和反序列化爲對象
- 20. 爲什麼我們不能序列化這些對象?
- 21. 爲什麼jQuery ajax不能序列化我的對象?
- 22. 獲取對象而不是結果,我做錯了什麼?
- 23. JavaScript:爲什麼array.push()追加兩個對象而不是一個
- 24. 爲什麼我不能一個輸出文件放在VS2015
- 25. 爲什麼輸出2,0而不是2,3?
- 26. 這個程序爲什麼輸出8589934593而不是4294967298?
- 27. 爲什麼這個程序輸出4,而不是3?
- 28. 我什麼時候需要序列化一個對象?
- 29. 爲什麼JSON序列化返回一個部分反序列化的對象?
- 30. 爲什麼Math是一個對象而String是一個函數?
這些都可以被認爲是序列化。你如何堅持/重建對象狀態的細節並沒有真正定義序列化。例如,可以將對象序列化爲YAML,XML或二進制文件,但所有這些都是序列化的形式。這實際上取決於您希望持久化數據的'人類可讀'/便攜性如何,以及您想花費多少時間在翻譯邏輯上。 –