序列化與反序列化

回顧上一小節的序列化,作用是把實體物件轉換成 JSON 字串。

序列化

WebInfo webInfo = new WebInfo();
webInfo.age = 4;
webInfo.webname = "FoxDevelop";
webInfo.website = "foxdevelop.com";
webInfo.students = new Person[] { new Person { name = "Tom" }, new Person { name = "Jim" } };
// 將 webinfo 物件轉換為 JSON 字串
StringWriter sw = new StringWriter();
JsonWriter writer = new JsonWriter(sw);
new JsonSerializer().Serialize(writer, webInfo);
string json = sw.GetStringBuilder().ToString();Code language: JavaScript (javascript)
輸出對應的 JSON 結果
{"webname":"FoxDevelop","website":"foxdevelop.com","age":4,"students":[{"name":"張三"},{"name":"李四"}]}Code language: JSON / JSON with Comments (json)

反序列化

把 JSON 字串還原為實體物件

寫法一(底層 Reader 實作)

WebInfo model = new JsonSerializer()
    .Deserialize(new JsonTextReader(new StringReader(json)), typeof(WebInfo)) as WebInfo;Code language: JavaScript (javascript)

寫法二(簡潔泛型,Newtonsoft.Json)

WebInfo model = JavaScriptConvert.DeserializeObject<WebInfo>(json);Code language: HTML, XML (xml)

new JsonSerializer().Deserialize(new JsonTextReader(new StringReader(jsonString)), typeof(類別名稱) as 類別名稱

透過以上方式,就可以把 JSON 物件反序列化成實體物件。

也可以這樣寫

JavaScriptConvert.DeserializeObject<NodeInfo>(jsonText)

序列化與反序列化

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *