• 微软原版系统

  • 一键重装系统

  • 纯净系统

  • 在线技术客服

魔法猪系统重装大师 一键在线制作启动 U 盘 PE 系统 用一键重装的魔法拯救失去灵魂的系统
当前位置:首页 > 教程 > 电脑教程

C#序列化与反序列化几种格式之间的转换

时间:2015年04月02日 15:24:25    来源:魔法猪系统重装大师官网    人气:11350

这里介绍了几种方式之间的序列化与反序列化之间的转换

首先介绍的如何序列化,将object对象序列化常见的两种方式即string和xml对象;

第一种将object转换为string对象,这种比较简单没有什么可谈的;

 public string ScriptSerialize(T t)
        {
            JavaScriptSerializer serializer = new JavaScriptSerializer();
            return serializer.Serialize(t);
        }


第二种将object转换为xml对象:

 public string ScriptSerializeToXML(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(string strJson)
        {
            JavaScriptSerializer serializer = new JavaScriptSerializer();
            return serializer.Deserialize(strJson);
        }

二、将string对象反序列化为list对象

 public List JSONStringToList(string strJson)
        {
            JavaScriptSerializer serializer = new JavaScriptSerializer();
            List objList = serializer.Deserialize>(strJson);
            return objList;
        }

三、将string对象反序列化为datatable对象

  public DataTable JSONStringToDataTable(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(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(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 list = Serialize.JSONStringToList(strJson);
12             //将一个xml对象转换为object对象
13            strJson = strJson.Substring(1, strJson.Length - 1);
14             loginObject = Serialize.JSONXMLToObject(strJson);
15             //将字符串转换为dataTable
16             DataTable dt = Serialize.JSONStringToDataTable(strJson);
17             //将字符串转换为object对象
18             loginObject = Serialize.ScriptDeserialize(strJson);

序列化,与,反,几种,格式,之,间的,转换,这里,
栏目:电脑教程 阅读:1000 2023/12/27
Win7教程 更多>>
U盘教程 更多>>
Win10教程 更多>>
魔法猪学院 更多>>

Copyright © 2015-2023 魔法猪 魔法猪系统重装大师

本站发布的系统仅为个人学习测试使用,请在下载后24小时内删除,不得用于任何商业用途,否则后果自负,请支持购买微软正版软件。

在线客服 查看微信 返回顶部