版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- MT/T 1314-2025煤矿在用无极绳连续牵引车检测检验规范
- 放疗生物练习题及答案分享
- TBFIA 048-2025 分布式数据库技术金融应用 数据迁移要求
- 省考联考·行政职业能力测验押题卷(真题汇编)
- 2025数学一历年真题(详细解析)
- 交通运输的历史与发展
- 全国统考数学二冲刺试卷|2025考研(提分冲刺卷)
- 急性腮腺炎的抢救流程
- CorelDRAW 设计案例试题及答案
- 《执业药师职业资格制度规定》解读
- 2026新教材语文 4《冀中地道战》第一课时 教学课件
- 2026秋人教版初中英语七年级上册(新教材)教学计划含进度表
- 喷砂工考试题及答案
- 《石材加工企业职业病危害风险分级管控体系实施指南》
- 2026重庆科瑞南海制药有限责任公司招聘15人笔试备考题库及答案详解
- 2026年秋季学期小学三年级信息科技教学计划(人教版2024上册)
- 5.1《从小爱劳动》课件 统编版道德与法治三年级下册
- 人手及物体初始菌检验方法的验证21
- 九年级生命生态安全教案(完整版)
- 竞选大学心理委员ppt模板
- 矿山供电技术ch1.1矿山供电系统课件
评论
0/150
提交评论