天天看點

序列化、反序列化XML和JSON對象常用的方式

序列化、反序列化對象常用的兩種方式

目錄

序列化和反序列化對象常用的兩種方式

一、序列化和反序列化XML

1.1、序列化XML

1.2、反序列化XML

二、序列化和反序列化JSON

2.1、嘗試序列化資訊為JSON,并存放到文本檔案中。

2.2反序列化JSON檔案為對象

序列化是使用指定的格式将一個或多個對象轉換為位元組序列的過程。反序列化則是相反的過程。

我們這裡記錄2個常用的序列化和反序列化方法。

1、序列化為XML

2、系列化為JSON

建立一個WPF程式。

建立一個類檔案命名為Person,同時我們引用以下名稱空間,建立Person的類中的屬性,

使用[XmlAtribute("fname")]屬性,會把按目前類屬性從子節點變為目前節點的屬性,檔案大小就變小了。可以嘗試一下去掉和不去掉之後産生的XML是否一樣。

在MainWindow.cs檔案中我們在構造函數中執行個體化Person。序列化到檔案中,然後再反序列化回來。同時我們觀察使用XmlAttribute和不使用XmlAttribute有什麼差别、觀察屬性定義為public類型和protected類型再序列化和反序列化過程中有什麼不同。

序列化、反序列化XML和JSON對象常用的方式

左邊是不使用再類屬性上添加 [XmlAttribute("")]的方法生成的xml檔案。右側是使用 [XmlAttribute("")]屬性。右側檔案小了很多。

我們現在反序列化這個XML檔案。

我們添加代碼後完整代碼如下:

點選運作,我們觀察VS的輸出中這三行Log。我們的反序列化就完成了。

使用JSON序列化格式的最流行的.NET庫之一是Newtonsoft.Json,又名Json.NET。

我們再項目右鍵點選彈出菜單中選擇管理NuGet包,點選浏覽輸入Newtonsoft.Json。選中找到的Newtonsoft.Json,點選安裝。

我們再後面添加如下代碼

調試運作輸出找到Log關鍵行如下。

反序列化的過程,我們使用File讀取檔案内容,然後使用JsonConvert.DeserializeObject 來反序列化到對象。具體代碼如下:

再Person中重寫ToString()方法用于再反序列化結束後列印輸出内容。

整體代碼如上,序列化xml和反序列化xml,序列化json和反序列化json都再上面。适用于NET Core之前的版本。Net Core之後的有System.Text.Json對象。