這里介紹了幾種方式之間的序列化與反序列化之間的轉換
網站建設哪家好,找創新互聯!專注于網頁設計、網站建設、微信開發、微信小程序、集團企業網站建設等服務項目。為回饋新老客戶創新互聯還提供了義安免費建站歡迎大家使用!首先介紹的如何序列化,將object對象序列化常見的兩種方式即string和xml對象;
第一種將object轉換為string對象,這種比較簡單沒有什么可談的;
public string ScriptSerialize<T>(T t)
{
JavaScriptSerializer serializer= new JavaScriptSerializer();
return serializer.Serialize(t);
}
第二種將object轉換為xml對象:
public string ScriptSerializeToXML<T>(T t)
{
XmlSerializer serializer= new XmlSerializer(typeof(T));
MemoryStream mem= new MemoryStream();
XmlTextWriter writer= new XmlTextWriter(mem,Encoding.UTF8);
XmlSerializerNamespaces ns= new XmlSerializerNamespaces();
ns.Add("","");
serializer.Serialize(writer,t,ns);
writer.Close();
return Encoding.UTF8.GetString(mem.ToArray());
}
下面我主要講string對象反序列化為對應的對象;
一、將string對象反序列化為object對象
public T ScriptDeserialize<T>(string strJson)
{
JavaScriptSerializer serializer= new JavaScriptSerializer();
return serializer.Deserialize<T>(strJson);
}
二、將string對象反序列化為list對象
public List<T> JSONStringToList<T>(string strJson)
{
JavaScriptSerializer serializer= new JavaScriptSerializer();
List<T> objList = serializer.Deserialize<List<T>>(strJson);
return objList;
}
三、將string對象反序列化為datatable對象
public DataTable JSONStringToDataTable<T>(string strJson)
{
DataTable dt= new DataTable();
if (strJson.IndexOf("[") > -1)//如果大于則strJson存放了多個model對象 {
strJson= strJson.Remove(strJson.Length - 1, 1).Remove(0, 1).Replace("},{", "};{");
}
JavaScriptSerializer serializer= new JavaScriptSerializer();
string[] items = strJson.Split(';');
foreach (PropertyInfo property in typeof(T).GetProperties())//通過反射獲得T類型的所有屬性 {
DataColumn col= new DataColumn(property.Name,property.PropertyType);
dt.Columns.Add(col);
}
//循環 一個一個的反序列化 for (int i = 0; i < items.Length; i++)
{
DataRow dr= dt.NewRow();
//反序列化為一個T類型對象 T temp = serializer.Deserialize<T>(items[i]);
foreach (PropertyInfo property in typeof(T).GetProperties())
{
dr[property.Name]= property.GetValue(temp,null);
}
dt.Rows.Add(dr);
}
return dt;
}
四、將xml對象反序列化為object對象
public T JSONXMLToObject<T>(string strJson)
{
XmlDocument xdoc= new XmlDocument();
try
{
xdoc.LoadXml(strJson);
XmlNodeReader reader= new XmlNodeReader(xdoc.DocumentElement);
XmlSerializer ser= new XmlSerializer(typeof(T));
object obj = ser.Deserialize(reader);
return (T)obj;
}
catch
{
return default(T);
}
}
現在用具體的實例來如何調用他們呢?特別要注意的是將xml對象反序列化objcet對象
public class LoginObject
{
public string Account { get; set;}
public string Password { get; set;}
}
1 LoginObject loginObject = new LoginObject { Account = account, Password = password };
2 ExTools.Manage.Class.CScriptSerialize Serialize = new Class.CScriptSerialize();
3 //將object對象轉換為string 4 string strJson=Serialize.ScriptSerialize(loginObject);
5
6 //將object對象轉換為xml對象 7 string strJson = Serialize.ScriptSerializeToXML(loginObject);
8
9
10 //轉換為list對象11 List<LoginObject> list = Serialize.JSONStringToList<LoginObject>(strJson);
12 //將一個xml對象轉換為object對象13 strJson = strJson.Substring(1, strJson.Length - 1);
14 loginObject = Serialize.JSONXMLToObject<LoginObject>(strJson);
15 //將字符串轉換為dataTable16 DataTable dt = Serialize.JSONStringToDataTable<LoginObject>(strJson);
17 //將字符串轉換為object對象18 loginObject = Serialize.ScriptDeserialize<LoginObject>(strJson);
因本人技術有限,現階段僅用作記錄收藏他人作品。
網站標題:序列化與反序列化之間的轉換-創新互聯
文章來源:http://m.newbst.com/article32/dehpsc.html
成都網站建設公司_創新互聯,為您提供軟件開發、標簽優化、App設計、網站維護、關鍵詞優化、網站制作
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯