剛剛碰巧群裡有人問這個問題,而之前的部落格中并沒有提及,打算弄一篇部落格簡單提及一下這個知識點。
MSDN文檔中提及了序列化、反序列化的概念,這裡引用一下。
序列化:将對象狀态轉換為可保持或傳輸的形式的過程。
反序列化:是序列化的逆過程,就是将流轉換為對象的過程。
這兩個過程一起保證資料易于傳輸和存儲。
下面直接給出完整的代碼,該代碼示範了如何序列化一個對象以及反序列化(還原對象)的過程。
運作結果截圖:

XML序列化
示例:用XmlSerializer序列化一個學生對象。
如果程式沒有發生異常,則可以在控制台項目bin\Debug目錄下檢視生成的張三.xml檔案内容。
XML反序列化
示例:将上個例子中生成的張三.xml檔案反序列化為C#中的張三對象。
JSON序列化
Ø JavaScriptSerializer
使用JavaScriptSerializer需要在項目中添加引用System.Web.Extensions,然後引用命名空間System.Web.Script.Serialization。
示例:使用JavaScriptSerializer将張三對象序列化為JSON字元串
Ø DataContractJsonSerializer
使用DataContractJsonSerializer需要在項目中添加引用System.Runtime.Serialization,然後引用命名空間System.Runtime.Serialization.Json。
示例:使用DataContractJsonSerializer将張三對象序列化為JSON字元串
序列化完成後,可以在項目的bin/Debug目錄下看到生成的張三.json檔案。用notepad++等文本編輯器打開可以看到生成的json内容。
張三.json檔案内容:
{"Address":"中國","Name":"張三","Phone":"13012345678","Sex":1}
Ø Json.NET
示例:使用Json.NET需要添加引用Newtonsoft.Json,可以通過nuget線上安裝或者直接下載下傳Newtonsoft.Json開發包添加引用。
通過nuget線上安裝示意圖
點選界面右側的安裝按鈕,進行安裝。安裝成功後,會在VS輸出視窗看到安裝過程。
安裝完畢後,會為我們的控制台項目預設添加Newtonsoft.Json引用。
示例:使用Json.NET序列化張三對象為Json字元串
可以看到輸出結果中,Sex的值為1,并不是之前的Male。這是由于Json.NET在處理枚舉時會預設将枚舉元素的值輸出。可以通過給枚舉添加屬性聲明的方式輸出枚舉元素的名稱。
将Student類修改如下:
引用StringEnumConverter類需要添加Newtonsoft.Json.Converters命名空間。通過如上的修改輸出序列化JSON字元串時會得到枚舉的名稱。
JSON反序列化
示例:使用JavaScriptSerializer将張三序列化生成的JSON字元串反序列化為張三對象
示例:使用DataContractJsonSerializer将張三.json檔案反序列化為張三對象。
示例:将張三的JSON字元串反序列化為張三對象