课题_序列化与反序列化,及Json序列化反序列化.doc

上传人:叶*** 文档编号:37594151 上传时间:2022-09-01 格式:DOC 页数:11 大小:45.50KB
返回 下载 相关 举报
课题_序列化与反序列化,及Json序列化反序列化.doc_第1页
第1页 / 共11页
课题_序列化与反序列化,及Json序列化反序列化.doc_第2页
第2页 / 共11页
点击查看更多>>
资源描述

《课题_序列化与反序列化,及Json序列化反序列化.doc》由会员分享,可在线阅读,更多相关《课题_序列化与反序列化,及Json序列化反序列化.doc(11页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、序列化与反序列化,及Json序列化反序列化序列化是将对象状态转换为可保持或可传输的格式的过程,反序列化则过程相反。用于存储与传输数据。(一)asp序列化与反序列化提供多种序列化类(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=89589689;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=89589689;FileStreamfs=newFileStream(soaptest.dat,FileMode.Create);SoapFormatterformatter=newSoapFormatter();tryformatter.Serialize

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

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

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

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

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

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

13、ractJsonSerializer(typeof(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)Ser

14、ialize(Object,StringBuilder)publicvoidTestJsSerialize()Customercustomer=newCustomerUnid=1,Name=宋江,Call=89589689;JavaScriptSerializerjs=newJavaScriptSerializer();Console.WriteLine(js.Serialize(customer);输出串:Unid:1,Name:宋江,Call:895896892 Deserialize方法publicvoidTestJsDeserialize()stringstr=File.ReadAll

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

16、=89589689;stringstrJson=JsonConvert.SerializeObject(customer);StreamWritersw=File.CreateText(jsonnet.txt);sw.Write(strJson);sw.Close();2DeserializeObject方法publicvoidTestJsonnetDeserialize()stringstr=File.ReadAllText(jsonnet.txt);Customercustomer=JsonConvert.DeserializeObject(str);Console.WriteLine(customer.Name);第 11 页

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > 工作报告

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com