.net 序列化 与反序列化 Serializable
2024-08-29 22:01:06
序列化:序列化指的是 将对象 通过流的方式 保存为一个文件。 反序列化则是将该文件还原成 对象的过程。
序列化的作用:序列化可以跨语言跨平台 传输数据,将某一对象序列化成通用的文件格式在进行传输。 比如XML 等。
C# 中的序列化方法有一下4种:
1.BinaryFormatter
2.SoapFormatter(.net 3.5 开始便废弃它了,不要在生产代码中使用它)
3.XmlSerializer
4.Json
首先查看 BinaryFormatter 序列化 反序列化
//Serializable 标示可序列化
[Serializable]
public class Cars
{
public ArrayList carBrandList; //品牌数组
public Cars()
{
carBrandList = new ArrayList();
}
public string CarName;
[NonSerialized] //标示不可序列化
public string carNumber; public string CarID
{ get; set; } private string _carPrice;
public void SetCarPrice(string price)
{
_carPrice = price;
}
}
static void Main(string[] args)
{
//实例化对象
Cars cars = new Cars();
cars.CarID = "";
cars.carBrandList.Add("宝马");
cars.carBrandList.Add("路虎");
cars.carBrandList.Add("布加迪");
cars.CarName = "路虎-揽胜极光";
cars.carNumber = "闽A-0888A";
cars.SetCarPrice("590000.00"); //BinaryFormatter 序列化
string strFile = "c:\\cars.txt";
using (FileStream fs = new FileStream(strFile, FileMode.Create))
{
BinaryFormatter formatter = new BinaryFormatter();
formatter.Serialize(fs, cars);
}
Cars car = DeSerialize(); //
}
//反序列化
public Cars DeSerialize()
{
string strFile = "c:\\cars.txt";
Cars cars;
using (FileStream fs = new FileStream(strFile, FileMode.Open))
{
BinaryFormatter formatter = new BinaryFormatter();
cars = (Cars)formatter.Deserialize(fs);
}
return cars;
}
接下来查看下 反序列化回来的对象属性
SoapFormatter序列化反序列化
//Serializable 标示可序列化
[Serializable]
public class Cars
{
public ArrayList carBrandList; //品牌数组 public Cars()
{
carBrandList = new ArrayList();
} public string CarName; [NonSerialized] //标示不可序列化
public string carNumber; public string CarID
{ get; set; } private string _carPrice; public void SetCarPrice(string price)
{
_carPrice = price;
} }
static void Main(string[] args)
{
//SoapFormatter 序列化
string strSoapFile = "c:\\cars.Soap";
using (FileStream fs = new FileStream(strSoapFile, FileMode.Create))
{
SoapFormatter formatter = new SoapFormatter();
formatter.Serialize(fs, cars);
}
Cars scar = DeSoapSerialize();
} //反序列化
public Cars DeSoapSerialize()
{
string strFile = "c:\\cars.Soap";
Cars cars;
using (FileStream fs = new FileStream(strFile, FileMode.Open))
{
SoapFormatter formatter = new SoapFormatter();
cars = (Cars)formatter.Deserialize(fs);
}
return cars;
}
XmlSerializer 序列化 反序列化
//Serializable 标示可序列化
[Serializable]
public class Cars
{
public ArrayList carBrandList; //品牌数组 public Cars()
{
carBrandList = new ArrayList();
} public string CarName; [NonSerialized] //标示不可序列化
public string carNumber; public string CarID
{ get; set; } private string _carPrice; public void SetCarPrice(string price)
{
_carPrice = price;
} }
static void Main(string[] args)
{ //实例化对象
Cars cars = new Cars();
cars.CarID = "";
cars.carBrandList.Add("宝马");
cars.carBrandList.Add("路虎");
cars.carBrandList.Add("布加迪");
cars.CarName = "路虎-揽胜极光";
cars.carNumber = "闽A-0888A";
cars.SetCarPrice("590000.00"); //XmlSerializer 序列化
string strXMLFile = "c:\\cars.XML";
using (FileStream fs = new FileStream(strXMLFile, FileMode.Create))
{
XmlSerializer serializer = new XmlSerializer(typeof(Cars));
serializer.Serialize(fs, cars);
}
Cars xcar = DeXMLSerialize();
} public Cars DeXMLSerialize()
{
string strFile = "c:\\cars.XML";
Cars cars;
using (FileStream fs = new FileStream(strFile, FileMode.Open))
{
XmlSerializer formatter = new XmlSerializer(typeof(Cars));
cars = (Cars)formatter.Deserialize(fs);
}
return cars;
}
都执行完成后 大家可以查看下生产的 的 文件,查看下反序列化出来的结果 可以发现
1.单有[NonSerialized] 表示的时候 BinaryFormatter 与 Soap 是无法序列化对象属性。
2.private 私有属性 XML方式是无法序列化的。
3.XML可序列化[NonSerialized]标示的 属性。
最新文章
- Unity Game窗口中还原Scene窗口摄像机操作 强化版
- 如何在github下载开源项目到本地(Coding iOS 客户端为例)
- linux 学习随笔-文件目录管理
- Linux shell中运行命令后加上字符“&;”的作用
- div mouseenter 事件在IE下无效
- 基于AppCan MAS系统,如何轻松实现移动应用数据服务?
- vim乱码问题
- SSMS2008插件开发(1)--介绍
- Linux指令--df,du
- Linux下的/etc/hosts文件
- linux各文件夹含义和作用
- iis 网页HTTP 错误 404.3 - Not Found解决方案
- Http协议常见状态码
- Java日期时间处理
- ECMAscript,DOM,BOM哪个比较重要
- 关于JFame 屏幕居中显示的问题
- ubunut下安装ibus_pinyin中文输入法
- asdm不能登录问题;浏览器必须是ie,不能是chrome或者firefox;java的版本,尤其是安全等级和例外需要调整
- 【吉比特】G-bits2018校园春季招聘技术类岗位笔试经验
- 启用yarn日志聚集功能