首页 > Web开发 > 详细

.net 中序列化和反序列化的使用

时间:2014-04-08 22:53:07      阅读:748      评论:0      收藏:0      [点我收藏+]

序列化的目的:将对象状态转换为可保持或传输的格式的过程。与序列化相对的是反序列化,它将流转换为对象。这两个过程结合起来,可以轻松地存储和传输数据。

序列化

序列化分为JSON 序列化,XML序列化,二进制序列化

准备工作,新建一个Person类

1    [Serializable]
2     public class Person
3     {
4         public string Name { get; set; }
5         public int Age { get; set; }
6     }

 

该类用[Serializable]标签表示为可序列化

准备工作,创建该类的示例

1   Person p = new Person() { Name = "张三", Age = 25 };

一,JSON序列化和反序列化

 1,JSON序列化

1    /*json序列化*/
2    var javaScriptSerializer = new System.Web.Script.Serialization.JavaScriptSerializer();
3    var str = javaScriptSerializer.Serialize(p);

结果:bubuko.com,布布扣

2,JSON反序列化

1             /*json 反序列化*/
2             var jsonObject = javaScriptSerializer.Deserialize(str, p.GetType());
3             Console.WriteLine((jsonObject as Person).Name);
4             Console.Read();

3,JSON序列化还有一种方式

bubuko.com,布布扣
1  /*json序列化*/
2             DataContractJsonSerializer dcjs = new DataContractJsonSerializer(p.GetType());
3             MemoryStream ms = new MemoryStream();
4             dcjs.WriteObject(ms, p);
5             var s = Encoding.UTF8.GetString(ms.ToArray());
6             ms.Close();
7             /*反序列化*/
8             MemoryStream ms1 = new MemoryStream(Encoding.UTF8.GetBytes(s));
9             var objPerson = dcjs.ReadObject(ms1) as Person;
bubuko.com,布布扣

  使用这个类的时候,会在序列化的JSON字符串带有 K__BackingFideId 前缀

  如下图;bubuko.com,布布扣

 当Person 类中没有[Serializable] 标签的时候一切都恢复正常了

二,XML序列化和反序列化

bubuko.com,布布扣
 1   /*xml序列化*/
 2             FileStream fsXml = new FileStream("1.xml", FileMode.Create, FileAccess.ReadWrite);
 3             System.Xml.Serialization.XmlSerializer xsl = new XmlSerializer(p.GetType());
 4             xsl.Serialize(fsXml, p);
 5             fsXml.Dispose();
 6 
 7             /*xml反序列化*/
 8             FileStream fsDeXml = new FileStream("1.xml", FileMode.Open, FileAccess.ReadWrite);
 9             var Xmlobj = xsl.Deserialize(fsDeXml);
10             fsDeXml.Dispose();
bubuko.com,布布扣

三,二进制序列化和反序列化

bubuko.com,布布扣
 1             /*二进制序列化*/
 2             FileStream fsBin = new FileStream("2.txt", FileMode.OpenOrCreate, FileAccess.ReadWrite);
 3             BinaryFormatter bf = new BinaryFormatter();
 4             bf.Serialize(fsBin, p);
 5             fsBin.Dispose();
 6 
 7             /*二进制反序列化*/
 8             FileStream fsBinDes = new FileStream("2.txt", FileMode.OpenOrCreate, FileAccess.ReadWrite);
 9             BinaryFormatter bfDes = new BinaryFormatter();
10             var binObject = bfDes.Deserialize(fsBinDes);
bubuko.com,布布扣

 

.net 中序列化和反序列化的使用,布布扣,bubuko.com

.net 中序列化和反序列化的使用

原文:http://www.cnblogs.com/luoyefeiwu/p/3650432.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!