序列化和json對比

 序列化

序列化是將對象狀態轉換爲可保持或可傳輸的格式的過程。與序列化相對的是反序列化,它將流轉換爲對象。這兩個過程結合起來,可以輕鬆地存儲和傳輸數據。
將對象的狀態信息轉換爲可以存儲或傳輸的窗體的過程。 在序列化期間,對象將其當前狀態寫入到臨時或持久性存儲區。以後,可以通過從存儲區中讀取或反序列化對象的狀態,重新創建該對象。
通常,對象實例的所有字段都會被序列化,這意味着數據會被表示爲實例的序列化數據。這樣,能夠解釋該格式的代碼有可能能夠確定這些數據的值,而不依賴於該成員的可訪問性。類似地,反序列化從序列化的表示形式中提取數據,並直接設置對象狀態,這也與可訪問性規則無關。 對於任何可能包含重要的安全性數據的對象,如果可能,應該使該對象不可序列化。如果它必須爲可序列化的,請嘗試生成特定字段來保存不可序列化的重要數據。如果無法實現這一點,則應注意該數據會被公開給任何擁有序列化權限的代碼,並確保不讓任何惡意代碼獲得該權限。

 

JSON的概念
JSON,JavaScript Object Notation,一種更輕、更友好的用於接口(AJAX、REST等)數據交換的格式。 JSON是結構化數據串行化的文本格式,作爲XML的一種替代品,用於表示客戶端與服務器間數據交換有效負載的格式。它是從ECMAScript語言標準衍生而來的。JSON的設計目標是使它成爲小的、輕便的、文本的,而且是JavaScript的一個子集。
【長度的比較】
serialize在編碼後大概是json的兩倍。
原因:
serialize後字符串包含了子串的長度,這可能是速度方面的優化,典型的空間換時間,但是它本身還是太重了。
serialize有更加詳細的類型區分,而json只有四種類型,並且是以簡單的符號表示。

【速度的比較】
serialize的速度在大數據量的情況下比json差了快一個數量級。
從上面兩點看,json不管是在速度還是在生成的字符串的大小上都比serialize要好,那爲什麼serialize還要存在呢? 原因在下面這個點:實現的功能。

【處理對象】
json無法處理對象方法等數據。
【使用範圍】
序列化使用serialize,特別是對象的存儲。這是其存在的意義。
與對象無關的數據存儲可以使用json,如包含大量數字的數組等。只是當遇到這種情況,我們需要做的可能是重構數據庫了。
數據交換時使用JSON,這也是其定義所在。
目前JSON是能用於UTF-8編碼的數據。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章