国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C# > 正文

淺談C# 序列化與反序列化幾種格式的轉換

2019-10-29 21:22:22
字體:
來源:轉載
供稿:網友

這里介紹了幾種方式之間的序列化與反序列化之間的轉換

首先介紹的如何序列化,將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);      }      //循環(huán) 一個一個的反序列化      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;}   }
LoginObject loginObject = new LoginObject { Account = account, Password = password };      ExTools.Manage.Class.CScriptSerialize Serialize = new Class.CScriptSerialize();      //將object對象轉換為string       string strJson=Serialize.ScriptSerialize(loginObject);           //將object對象轉換為xml對象      string strJson = Serialize.ScriptSerializeToXML(loginObject);            //轉換為list對象       List<LoginObject> list = Serialize.JSONStringToList<LoginObject>(strJson);      //將一個xml對象轉換為object對象      strJson = strJson.Substring(1, strJson.Length - 1);      loginObject = Serialize.JSONXMLToObject<LoginObject>(strJson);      //將字符串轉換為dataTable      DataTable dt = Serialize.JSONStringToDataTable<LoginObject>(strJson);      //將字符串轉換為object對象      loginObject = Serialize.ScriptDeserialize<LoginObject>(strJson);

以上這篇淺談C# 序列化與反序列化幾種格式的轉換就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持VEVB武林網


注:相關教程知識閱讀請移步到c#教程頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 石台县| 揭阳市| 含山县| 黑山县| 唐山市| 科技| 邵东县| 抚远县| 中山市| 防城港市| 喜德县| 海淀区| 宽城| 平果县| 虹口区| 库伦旗| 纳雍县| 通化县| 永寿县| 塔河县| 十堰市| 江阴市| 平塘县| 嵊泗县| 监利县| 邵阳县| 宣武区| 沅陵县| 桃园县| 珲春市| 都江堰市| 界首市| 洞头县| 阿鲁科尔沁旗| 台安县| 河西区| 伊金霍洛旗| 龙陵县| 彩票| 马边| 武穴市|