首先需要先定義資料類別
DataContract用來標記類別
DataMember用來標記屬性,Name可以用來變更序列化後的名稱,Order則是序列化的順序
IgnoreDataMember用來標記屬性,表示不參與序列化過程
DataContract用來標記類別
DataMember用來標記屬性,Name可以用來變更序列化後的名稱,Order則是序列化的順序
IgnoreDataMember用來標記屬性,表示不參與序列化過程
| 
1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
11 
12 
13 
14 
15 
16 
17 
18 | [DataContract]publicclassJsonData{    [DataMember(Name = "ID", Order = 0)]    publicintId { get; set; }    [DataMember(Order = 1)]    publicstringName { get; set; }    [DataMember(Order = 2)]    publicDateTime Today { get; set; }    [DataMember(Order=3)]    publicboolIsBool { get; set; }    [IgnoreDataMember()]    publicstringUnlessField { get; set; }} | 
初始化DataContractJsonSerializer類別時,需傳入要序列化的資料型別
| 
1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
11 
12 
13 | // 淮備序列化的類別資料JsonData d1 = newJsonData(){    Id = 1,    Name = "data",    Today = DateTime.Now,    IsBool = true,    UnlessField = "沒用到的欄位"};// 初始化DataContractJsonSerializer類別DataContractJsonSerializer dcjs = newDataContractJsonSerializer(typeof(JsonData));stringjsonString = string.Empty; | 
序列化資料使用WriteObject寫入Stream
再用Encoding取得json字串
再用Encoding取得json字串
| 
1 
2 
3 
4 
5 
6 
7 | // 序列化資料using(MemoryStream ms = newMemoryStream()){    dcjs.WriteObject(ms, d1);    jsonString = Encoding.UTF8.GetString(ms.ToArray());    Console.WriteLine(jsonString);} | 
反序列化資料先用Encoding取得取得Byte Array讀入Stream
再用ReadObject讀出資料型別
再用ReadObject讀出資料型別
| 
1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
11 
12 | // 反序列化資料using(MemoryStream ms = newMemoryStream(Encoding.UTF8.GetBytes(jsonString))){    JsonData d2 = dcjs.ReadObject(ms) asJsonData;    Console.WriteLine(        "Id:{0}, Name:{1}, Today:{2}, IsBool:{3}, UnlessField:{4}",        d2.Id,        d2.Name,        d2.Today,        d2.IsBool,        d2.UnlessField);} | 

 
沒有留言:
張貼留言