asp.net中对象的序列化,方便网络传输
对象序列化 是将对象状态转换为可保持或传输的格式的过程。
反序列化 是将流转换为对象
序列化和反序列化相结合
可以使对象数据轻松的存储和传递
在 .NET 中,如果是对象可序列化,需要在 声明对象的开始部分加上 [Serializable]
这个属性,并且不能被继承
如一个类
[Serializable]
public class
A
{
public string title;
}
public class B :
A
{
public int total;
}
则 对象B 不可被序列化
在
.NET 提供了3种序列化的方式 BinaryFormatter, SoapFormatter和 XmlSerializer
,下面对这3种方式分别以代码形式做介绍
预备工作:
创建一个 实体对象
[Serializable]
public class
Entity
{
private int _total;
private string _title;
private double
_timeCount;
private int
_pageCount;
public Entity()
{
}
public int
Total
{
get
{ return _total; }
set { _total =
value; }
}
public string
Title
{
get
{ return _title; }
set { _title =
value; }
}
public double
TimeCount
{
get { return _timeCount; }
set {
_timeCount = value; }
}
public
int PageCount
{
get { return _pageCount;
}
set { _pageCount = value;
}
}
}
1. BinaryFormatter
说明: 需要引入命名空间
System.Runtime.Serialization 和
System.Runtime.Serialization.Formatters.Binary
//序列化对象
Entity entity = new
Entity();
entity.Total =
10;
entity.Title =
"测试";
entity.TimeCount =
0.18;
entity.PageCount =
5;
IFormatter formatter = new
BinaryFormatter();
Stream stream =
new FileStream(@"D:\程序\DotNet技术\PDSource框架\Web\Serializer\myFile.txt",
FileMode.Create, FileAccess.Write,
FileShare.None);
formatter.Serialize(stream,
entity);
stream.Close();
//反序列化对象
IFormatter formatter1 =
new BinaryFormatter();
Stream
stream1 = new FileStream(@"D:\程序\DotNet技术\PDSource框架\Web\Serializer\myFile.txt",
FileMode.Open, FileAccess.Read,
FileShare.Read);
Entity entity1 =
(Entity)formatter1.Deserialize(stream1);
stream1.Close();
Response.Write(entity1.Total + "
" + entity1.Title + "
" +
entity1.TimeCount + "
" + entity1.PageCount);
2. SoapFormatter
说明:
需要引入命名空间 System.Runtime.Serialization 和
System.Runtime.Serialization.Formatters.Soap
//序列化对象
Entity entity = new
Entity();
entity.Total =
10;
entity.Title =
"测试";
entity.TimeCount =
0.18;
entity.PageCount =
5;
IFormatter formatter = new
SoapFormatter();
Stream stream =
new FileStream(@"D:\程序\DotNet技术\PDSource框架\Web\Serializer\myFile2.txt",
FileMode.Create, FileAccess.Write,
FileShare.None);
formatter.Serialize(stream,
entity);
stream.Close();
//反序列化对象
IFormatter formatter1 =
new SoapFormatter();
Stream
stream1 = new
FileStream(@"D:\程序\DotNet技术\PDSource框架\Web\Serializer\myFile2.txt",
FileMode.Open, FileAccess.Read,
FileShare.Read);
Entity entity1 =
(Entity)formatter1.Deserialize(stream1);
stream1.Close();
Response.Write(entity1.Total + "
" + entity1.Title + "
" +
entity1.TimeCount + "
" + entity1.PageCount);
3. XmlSerializer
说明:
需要引入命名空间
System.Xml.Serialization
//序列化对象
Entity entity = new
Entity();
entity.Total =
10;
entity.Title =
"测试";
entity.TimeCount =
0.18;
entity.PageCount =
5;
XmlSerializer formatter =
new XmlSerializer(typeof(Entity));
Stream stream = new
FileStream(@"D:\程序\DotNet技术\PDSource框架\Web\Serializer\myFile3.xml",
FileMode.Create, FileAccess.Write,
FileShare.None);
formatter.Serialize(stream,
entity);
stream.Close();
//反序列化对象
XmlSerializer formatter1
= new
XmlSerializer(typeof(Entity));
Stream stream1 = new
FileStream(@"D:\程序\DotNet技术\PDSource框架\Web\Serializer\myFile3.xml",
FileMode.Open, FileAccess.Read,
FileShare.Read);
stream1.Seek(0,
SeekOrigin.Begin);
Entity
entity1 =
(Entity)formatter1.Deserialize(stream1);
stream1.Close();
Response.Write(entity1.Total + "
" + entity1.Title + "
" +
entity1.TimeCount + "
" + entity1.PageCount);
asp.net中对象的序列化,方便网络传输的更多相关文章
- Asp.net中Json的序列化和反序列化(一)
JSON是专门为浏览器中的网页上运行的JavaScript代码而设计的一种数据格式.在网站应用中使用JSON的场景越来越多,本文介绍ASP.NET中JSON的序列化和反序列化,主要对JSON的简单介绍 ...
- ASP.NET中JSON的序列化和反序列化
JSON是专门为浏览器中的网页上运行的JavaScript代码而设计的一种数据格式.在网站应用中使用JSON的场景越来越多,本文介绍 ASP.NET中JSON的序列化和反序列化,主要对JSON的简单介 ...
- ASP.NET 中JSON 的序列化和反序列化
JSON是专门为浏览器中的网页上运行的JavaScript代码而设计的一种数据格式.在网站应用中使用JSON的场景越来越多,本文介绍ASP.NET中JSON的序列化和反序列化,主要对JSON的简单介绍 ...
- Asp.Net中JSON的序列化和反序列化-----JavaScriptSerializer ,加上自己工作心得
在工作中和手机通信用到web服务和javascriptSerializer,返回json数据,供手机端调用,一开始返回的数据是一大堆,比如 [{"word_picture9":&q ...
- ASP.NET中JSON的序列化和反序列化(转)
JSON是专门为浏览器中的网页上运行的JavaScript代码而设计的一种数据格式.在网站应用中使用JSON的场景越来越多,本文介绍ASP.NET中JSON的序列化和反序列化,主要对JSON的简单介绍 ...
- [转]ASP.NET中JSON的序列化和反序列化
本文转自:http://www.cnblogs.com/zhaozhan/archive/2011/01/09/1931340.html JSON是专门为浏览器中的网页上运行的JavaScript代码 ...
- 为什么需要用到序列化?为什么HttpSession中对象要序列化
简单说就是为了保存在内存中的各种对象的状态,并且可以把保存的对象状态再读出来.虽然你可以用你自己的各种各样的方法来保存Object States,但是Java给你提供一种应该比你自己好的保存对象状态的 ...
- 【原创】C++中对象的序列化
1.对象序列化 对象的序列化是指将对象的状态信息转换为可以存储或者传输的形式的过程.对象的反序列化是与序列化相反的过程. 在序列化期间,对象将其当前的状态写入到临时或者永久性的存储区,可以通过从存储区 ...
- java中对象的序列化和反序列化
[对象的序列化和反序列化 ] 1.定义:序列化--将对象写到一个输出流中.反序列化则是从一个输入流中读取一个对象.类中的成员必须是可序列化的,而且要实现Serializable接口,这样的类的对象才能 ...
随机推荐
- 【Fibonacci】BestCoder #28B Fibonacci
Fibonacci Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total S ...
- centos7支持ntfs
简单搜索了一下,发现一个很好的安装步骤,简洁有效,已经试验. rpm -ivh http://pkgs.repoforge.org/rpmforge-release/rpmforge-release- ...
- SharePoint缓存导致访问慢解决
产品发布到公网时,客户每次访问页面都很慢,经过查找原因,发现在服务器上的APPFabric缓存出错误了: APPFabric缓存服务作用:用作内存中缓存来存储应用程序访问的数据,从而提高应用程序性能. ...
- JavaScript入门(8)
一.什么是对象 JavaScript中的所有事物都是对象.如:字符串.数值.数组.函数等.每个对象带有属性和方法. 对象的属性:反映该对象某些特定的性质的.如:字符串的长度.图像的长宽 对象的方法:能 ...
- FFMPEG高级编程第一篇:环境搭建及编译
前段时间在翻看电脑里面资料时,发现了以前做的在嵌入式硬件上面运行以ffmepg为基础,以嵌入式硬件解码的多媒体播放工作,发现都快忘记完了.今日得闲整理温习了一下ffmpeg在嵌入式上的运用,这里给大家 ...
- Warning: Attempt to present * on * which is already presenting *
Warning: Attempt to present (要被presented的控制器) on (哪个控制器来presenting) which is already presenting (已经 ...
- C# 高精度乘法 支持小数(待优化)
将N*N乘法转化为(N*n1)+(N*n2)....(N*nn) 乘完后在补充小数点 public static char[] Quadrature(string a, string b) { ] { ...
- java中进制之间的转换
//十进制转其他进制 Integer.toHexString(10); //将10转换为十六进制,返回字符串类型 Integer.toOctalString(10); //将10转为八进制,返回字符串 ...
- java_object的具体使用--上帝
就我们所知道的,java中有子类和父类,子类由于继承父类而形成,那么父类还有没有父类呢?答案是有了,父类的父类就是object类,一切父类都继承了它,那么根据继承的属性,每一个子类都有一个object ...
- Oracle PL/SQL 多重选择句
Oracle中语句块的基本格式: declare --变量定义,初始化赋值. begin --变量的赋值,函数调用,if,while等. end: Oracle中的语句:关系运算符:= <> ...