课题序列化与反序列化及Json序列化反序列化_第1页
课题序列化与反序列化及Json序列化反序列化_第2页
课题序列化与反序列化及Json序列化反序列化_第3页
课题序列化与反序列化及Json序列化反序列化_第4页
课题序列化与反序列化及Json序列化反序列化_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、序列化与反序列化,及Json序列化反序列化序列化是将对象状态转换为可保持或可传输的格式的过程,反序列化则过程相反。用于存储和传输数据。(一)序列化与反序列化.net提供多种序列化类(1)BinaryFormatter类名字空间:System.Runtime.Serialization.Formatters.Binary这个类用于以二进制格式将对象或整个连接对象图形序列化和反序列化构造器两个:BinaryFormatter()BinaryFormatter(ISurrogateSelector,StreamingContext)介绍它的两个主要方法:1 Serialize方法将对象

2、或连接对象图形序列化为给定流它有两个重载:Serialize(Stream,Object)Serialize(Stream,Object,Header)类CustomerpublicclassCustomerpublicintUnidget;set;publicstringNameget;set;publicstringCallget;set;下边通过示例来测试序列化方法SerializepublicvoidTestSerialize()Customercustomer=newCustomerUnid=1,Name=宋江,Call=;FileStreamfs=newFileStream(tes

3、t.dat,FileMode.Create);BinaryFormatterformatter=newBinaryFormatter();tryformatter.Serialize(fs,customer);catchfinallyfs.Close();测试时,这个会抛出异常:类型“SerializeTest.Customer”未标记为可序列化。所以要在Customer类上添加修饰标签SerializablepublicclassCustomer测试,在bindebug文件夹中可以看到test.dat文件。2 Deserialize方法将流反序列化为对象图形,它也有两个重载Deseriali

4、ze(Stream)Deserialize(Stream,HeaderHandler)通过示例来测试从流进行反序列化publicvoidTestDeserialize()Customercustomer=newCustomer();FileStreamfs=newFileStream(test.dat,FileMode.Open);BinaryFormatterformatter=newBinaryFormatter();customer=formatter.Deserialize(fs)asCustomer;fs.Close();Console.WriteLine(customer.Name

5、);结果输出:宋江(2)SoapFormatter类名字空间:System.Runtime.Serialization.Formatters.Soap以SOAP格式将对象或整个连接对象的图形序列化和反序列化。SOAP就是simple object access protocol的缩写,简单对象传输协议。是一种轻量的,简单的,基于xml的协议。这个要添加对System.Runtime.Serialization.Formatters.Soap.dll的引用构造器:SoapFormatterxx=newSoapFormatter()SoapFormatter(ISurrogateSelector,

6、StreamingContext)主要介绍其中2个方法1Serialize方法Serialize(Stream,Object)Serialize(Stream,Object,HeaderpublicvoidTestSoapSerialize()Customercustomer=newCustomerUnid=1,Name=宋江,Call=;FileStreamfs=newFileStream(soaptest.dat,FileMode.Create);SoapFormatterformatter=newSoapFormatter();tryformatter.Serialize(fs,cust

7、omer);catchfinallyfs.Close();打开bindebug中的soaptest.dat文件,这就是soap格式。2 Deserialize方法反序列化soap格式Deserialize(Stream)Deserialize(Stream,HeaderHandler)其它的不多说了。publicvoidTestSoapDeserialize()Customercustomer=newCustomer();FileStreamfs=newFileStream(soaptest.dat,FileMode.Open);SoapFormatterformatter=newSoapFo

8、rmatter();customer=formatter.Deserialize(fs)asCustomer;fs.Close();Console.WriteLine(customer.Name);(3)XmlSerializer类将对象序列化到XML文档中和从XML文档中反序列化对象名字空间:System.Xml.Serialization构造方法太多,不列举了,可以参考帮助1Serialize方法拿出一个来说:publicvoidSerialize(XmlWriterxmlWriter,Objecto)publicvoidTestXmlSerialize()Customercustomer

9、=newCustomerUnid=1,Name=宋江,Call=;FileStreamfs=newFileStream(xmltest.xml,FileMode.Create);XmlSerializerformatter=newXmlSerializer(typeof(Customer);formatter.Serialize(fs,customer);fs.Close();结果可以到debugbin里查看。2 Deserialize方法publicvoidTestXmlDeserialize()Customercustomer=newCustomer();FileStreamfs=newF

10、ileStream(xmltest.xml,FileMode.Open);XmlSerializerformatter=newXmlSerializer(typeof(Customer);customer=formatter.Deserialize(fs)asCustomer;fs.Close();Console.WriteLine(customer.Name);(二)Json序列化与反序列化Json序列化和反序列化指的是:对象序列化为JSON,并可用于从JSON反序列化对象在.net 3.5中名字空间:System.Runtime.Serialization.Json但程序集是:System

11、.ServiceModel.Web.dll(1)DataContractJsonSerializer类构造方法很多。介绍这个类其中2个方法:1 WriteObject方法有好种重载,这里测试一个:publicoverridevoidWriteObject(Streamstream,Objectgraph)测试:publicvoidTestJsonSerialize()Customercustomer=newCustomerUnid=1,Name=宋江,Call=;DataContractJsonSerializerds=newDataContractJsonSerializer(typeof(

12、Customer);FileStreamfs=newFileStream(json.txt,FileMode.Create);ds.WriteObject(fs,customer);fs.Close();进行Json序列化时,类型不必添加修饰标签在bindebug里可以看到json串。2 ReadObject方法重载很多。publicoverrideObjectReadObject(Streamstream)测试:publicvoidTestJsonDeserialize()DataContractJsonSerializerds=newDataContractJsonSerializer(t

13、ypeof(Customer);FileStreamfs=newFileStream(json.txt,FileMode.Open);varcc=ds.ReadObject(fs);fs.Close();(2)JavaScriptSerializer类为启用AFAX的应用程序提供序列化和反序列化功能名字空间:System.Web.Script.Serialization程序集:System.Web.Extensions(在System.Web.Extensions.dll中)说其中2个方法1 Serialize方法Serialize(Object)Serialize(Object,String

14、Builder)publicvoidTestJsSerialize()Customercustomer=newCustomerUnid=1,Name=宋江,Call=;JavaScriptSerializerjs=newJavaScriptSerializer();Console.WriteLine(js.Serialize(customer);输出串:Unid:1,Name:宋江,Call:2 Deserialize方法publicvoidTestJsDeserialize()stringstr=File.ReadAllText(jsjson.txt);JavaScriptSerialize

15、rjs=newJavaScriptSerializer();Customercustomer=js.Deserialize(str);Console.WriteLine(customer.Name);(3)J这是一个第三方工具名字空间:Newtonsoft.Json添加Newtonsoft.Json.dll程序集其中2个方法:1SerializeObject方法publicvoidTestJsonnetSerialize()Customercustomer=newCustomerUnid=1,Name=宋江,Call=;stringstrJson=JsonConvert.SerializeObject(customer);StreamWritersw

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论