Serialization ဆိုတာ Object တစ်ခုကို Bytes Stream သို့ပြောင်းလဲလုပ်ဆောင်ခြင်းကို ခေါ်ပြီး၊ Deserialization ဆိုတာကတော့ Bytes Stream မှ Object သို့ ပြန်လည်ပြောင်းလဲခြင်းကို ခေါ်ပါတယ်။ ဒီနေရာမှာ Object တစ်ခုဆိုတာ အဓိကအားဖြင့် Data Structure တစ်ခုကိုပြောတာဖြစ်ပါတယ်။ ကျွန်တော်တို့ Programming မှာ Object တစ်ခုကို Memory ထဲမှာ လိုသလို ကိုင်တွယ်၊ လုပ်ဆောင်နိုင်ပေမယ့် အဲ့ဒီ Object ထဲက Data တွေကို သိမ်းဆည်းတဲ့အလုပ် (သို့) Network ထဲကို ပေးပို့တဲ့အလုပ် စသည်တို့ကို လုပ်ချင်တဲ့အခါမှာ Bytes Stream ပုံစံကို ပြောင်းလဲမှသာလျှင် လုပ်ဆောင်နိုင်မှာ ဖြစ်ပါတယ်။ Bytes Stream ဆိုတာ နောက်ပိုင်းမှာ ပြန်လည်အသုံးချလို့ရမယ့် ဥပမာ XML (သို့) JSON ကဲ့သိုသော ပုံစံမျိုးကိုပြောတာ ဖြစ်ပါတယ်။ အောက်မှာ နမူနာ Code ကို C# နှင့် ရေးသားထားပါတယ်။ ဒီ Code ထဲမှာ Object မှ XML ကို အပြန်အလှန် Serialize/Deserialize လုပ်ထားတယ်။ နောက်ပြီး Object မှ JSON ကို အပြန်အလှန် Serialize/Deserialize လုပ်ထားတယ်။ .Net မှာ JSON ကို Serialize/Deserialize လုပ်နိုင်တဲ့ Class ၃ခု ရှိတယ်။
JavaScriptSerializer
DataContractJsonSerializer
Json.NET
အဲ့ဒီထဲကမှ Json.Net ကိုသုံးထားတယ် ဘာလို့လည်းဆိုတော့ ရေးရတာလွယ်ပြီး၊ မြန်တဲ့အတွက်ကြောင့် ဖြစ်တယ်။ Json.Net ကိုသုံးမယ်ဆိုရင် Nuget Package ထဲကိုသွားပြီး Json.Net Library ကို Project ထဲမှာ Install လုပ်ပေးဖို့လိုတယ်။ ဒီနမူနာ Code မှာ Employee တွေထည့်ထားတဲ့ List ထဲက Data တွေကို Serialize/Deserialize လုပ်ထားတယ်။ နောက်ပြီး Code ထဲမှာ T ဆိုတာ သုံးထားတယ် T ကဘာလည်းဆိုတော့ Generic Type Parameters ဖြစ်တယ်။ သူ့ရဲ့သဘောတရားက ယေဘူယသတ်မှတ်ချင်တဲ့ Collection Class တွေကို ကိုယ်စားပြုတာပဲဖြစ်တယ်။ ဒီ ဥပမာထဲမှာဆိုရင် T ကို Pass လုပ်မယ့် Class က List နှင့် ၄င်းထဲမှာရှိတဲ့ Employee တွေဖြစ်တယ်။ T က Generic ဖြစ်တဲ့အတွက် အဲ့ဒီနေရာမှာ List မပါပဲ Employee Class တစ်ခုတည်းပဲ Pass လုပ်လည်းရတယ်။
using System.Collections.Generic;
using System.Text;
using System.IO;
using System.Xml;
using System.Xml.Serialization;
using System;
using Newtonsoft.Json;
namespace SerializationDeserialization
{
class Program
{
static void Main(string[] args)
{
List employees = new List()
{
new Employee() { Id=1, Name="Maung Maung", Title="Manager", DOB="12/1/1986", Address="Mandalay" },
new Employee() { Id=2, Name="Kyaw Kyaw", Title="Programmer", DOB="3/4/1975", Address="Yangon" },
new Employee() { Id=3, Name="Mya Mya", Title="System Analyst", DOB="8/5/1987", Address="Taung Gyi" }
};
XMLSerializeDeserialize
string xmlserializedData = XMLSerializeEmployees.SerializeData(employees);
Console.WriteLine("----------XML Serialize Data----------");
Console.WriteLine(xmlserializedData);
List xmldeserializedData = XMLSerializeEmployees.DeserializeData(xmlserializedData);
Console.WriteLine("----------XML Deserialize Data----------");
foreach (var emp in xmldeserializedData)
{
Console.WriteLine("Id : {0}\nName : {1}\nTitle : {2}\nDOB : {3}\nAddress : {4} ", emp.Id, emp.Name, emp.Title, emp.DOB, emp.Address);
Console.WriteLine("------------------------------------------------------------");
}
JSOSerializeDeserialize
string jsonserializedData = JsonSerializeEmployees.SerializeData(employees);
Console.WriteLine("----------JSON Serialize Data----------");
Console.WriteLine(jsonserializedData);
List jsodeserializedData = JsonSerializeEmployees.DeserializeData(jsonserializedData);
Console.WriteLine("----------JSON Deserialize Data----------");
foreach (var emp in xmldeserializedData)
{
Console.WriteLine("Id : {0}\nName : {1}\nTitle : {2}\nDOB : {3}\nAddress : {4} ", emp.Id, emp.Name, emp.Title, emp.DOB, emp.Address);
Console.WriteLine("------------------------------------------------------------");
}
Console.ReadLine();
}
}
public class Employee
{
public int Id { get; set; }
public string Name { get; set; }
public string Title { get; set; }
public string DOB { get; set; }
public string Address { get; set; }
}
public class XMLSerializeDeserialize
{
//XML Class
XmlSerializer xmlSerializer;
XmlDocument xDocument;
XmlNodeReader xNodeReader;
//String Class
StringBuilder sbData;
StringWriter swTextWriter;
//Serialize XML string (T = Generic Type Parameter)
public string SerializeData(T data)
{
sbData = new StringBuilder();
swTextWriter = new StringWriter(sbData);
XmlSerializer xmlSerializer = new XmlSerializer(typeof(T));
xmlSerializer.Serialize(swTextWriter, data);
return sbData.ToString();
}
//Deserialize T object
public T DeserializeData(string xmldata)
{
xDocument = new XmlDocument();
xDocument.LoadXml(xmldata);
xNodeReader = new XmlNodeReader(xDocument.DocumentElement);
xmlSerializer = new XmlSerializer(typeof(T));
var objData = xmlSerializer.Deserialize(xNodeReader);
T deserializedData = (T)objData;
return deserializedData;
}
}
//Newtonsoft.Json NeNuGet Package need to install
public class JSOSerializeDeserialize
{
//Serialize JSON string (T = Generic Type Parameter)
public string SerializeData(T data)
{
string jsonData = JsonConvert.SerializeObject(data);
return jsonData;
}
//Deserialize T object
public T DeserializeData(string jsondata)
{
var objData = JsonConvert.DeserializeObject(jsondata);
T deserializedData = (T)objData;
return deserializedData;
}
}
}
JavaScriptSerializer
DataContractJsonSerializer
Json.NET
အဲ့ဒီထဲကမှ Json.Net ကိုသုံးထားတယ် ဘာလို့လည်းဆိုတော့ ရေးရတာလွယ်ပြီး၊ မြန်တဲ့အတွက်ကြောင့် ဖြစ်တယ်။ Json.Net ကိုသုံးမယ်ဆိုရင် Nuget Package ထဲကိုသွားပြီး Json.Net Library ကို Project ထဲမှာ Install လုပ်ပေးဖို့လိုတယ်။ ဒီနမူနာ Code မှာ Employee တွေထည့်ထားတဲ့ List ထဲက Data တွေကို Serialize/Deserialize လုပ်ထားတယ်။ နောက်ပြီး Code ထဲမှာ T ဆိုတာ သုံးထားတယ် T ကဘာလည်းဆိုတော့ Generic Type Parameters ဖြစ်တယ်။ သူ့ရဲ့သဘောတရားက ယေဘူယသတ်မှတ်ချင်တဲ့ Collection Class တွေကို ကိုယ်စားပြုတာပဲဖြစ်တယ်။ ဒီ ဥပမာထဲမှာဆိုရင် T ကို Pass လုပ်မယ့် Class က List နှင့် ၄င်းထဲမှာရှိတဲ့ Employee
using System.Text;
using System.IO;
using System.Xml;
using System.Xml.Serialization;
using System;
using Newtonsoft.Json;
namespace SerializationDeserialization
{
class Program
{
static void Main(string[] args)
{
List
{
new Employee() { Id=1, Name="Maung Maung", Title="Manager", DOB="12/1/1986", Address="Mandalay" },
new Employee() { Id=2, Name="Kyaw Kyaw", Title="Programmer", DOB="3/4/1975", Address="Yangon" },
new Employee() { Id=3, Name="Mya Mya", Title="System Analyst", DOB="8/5/1987", Address="Taung Gyi" }
};
XMLSerializeDeserialize
- > XMLSerializeEmployees = new XMLSerializeDeserialize
- >();
string xmlserializedData = XMLSerializeEmployees.SerializeData(employees);
Console.WriteLine("----------XML Serialize Data----------");
Console.WriteLine(xmlserializedData);
List
Console.WriteLine("----------XML Deserialize Data----------");
foreach (var emp in xmldeserializedData)
{
Console.WriteLine("Id : {0}\nName : {1}\nTitle : {2}\nDOB : {3}\nAddress : {4} ", emp.Id, emp.Name, emp.Title, emp.DOB, emp.Address);
Console.WriteLine("------------------------------------------------------------");
}
JSOSerializeDeserialize
- > JsonSerializeEmployees = new JSOSerializeDeserialize
- >();
string jsonserializedData = JsonSerializeEmployees.SerializeData(employees);
Console.WriteLine("----------JSON Serialize Data----------");
Console.WriteLine(jsonserializedData);
List
Console.WriteLine("----------JSON Deserialize Data----------");
foreach (var emp in xmldeserializedData)
{
Console.WriteLine("Id : {0}\nName : {1}\nTitle : {2}\nDOB : {3}\nAddress : {4} ", emp.Id, emp.Name, emp.Title, emp.DOB, emp.Address);
Console.WriteLine("------------------------------------------------------------");
}
Console.ReadLine();
}
}
public class Employee
{
public int Id { get; set; }
public string Name { get; set; }
public string Title { get; set; }
public string DOB { get; set; }
public string Address { get; set; }
}
public class XMLSerializeDeserialize
{
//XML Class
XmlSerializer xmlSerializer;
XmlDocument xDocument;
XmlNodeReader xNodeReader;
//String Class
StringBuilder sbData;
StringWriter swTextWriter;
//Serialize XML string (T = Generic Type Parameter)
public string SerializeData(T data)
{
sbData = new StringBuilder();
swTextWriter = new StringWriter(sbData);
XmlSerializer xmlSerializer = new XmlSerializer(typeof(T));
xmlSerializer.Serialize(swTextWriter, data);
return sbData.ToString();
}
//Deserialize T object
public T DeserializeData(string xmldata)
{
xDocument = new XmlDocument();
xDocument.LoadXml(xmldata);
xNodeReader = new XmlNodeReader(xDocument.DocumentElement);
xmlSerializer = new XmlSerializer(typeof(T));
var objData = xmlSerializer.Deserialize(xNodeReader);
T deserializedData = (T)objData;
return deserializedData;
}
}
//Newtonsoft.Json NeNuGet Package need to install
public class JSOSerializeDeserialize
{
//Serialize JSON string (T = Generic Type Parameter)
public string SerializeData(T data)
{
string jsonData = JsonConvert.SerializeObject(data);
return jsonData;
}
//Deserialize T object
public T DeserializeData(string jsondata)
{
var objData = JsonConvert.DeserializeObject
T deserializedData = (T)objData;
return deserializedData;
}
}
}
0 ခုမှတ်ချက်ပေးထားတယ်။:
Post a Comment