回顧上一小節的序列化,作用是把實體物件轉換成 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)
序列化與反序列化
Previous: 介紹
Next: 陣列的序列化與反序列化