C#序列化与反序列化。
序列化介绍:
把对象用一种新的格式来表示。
系列化只序列化数据。
序列化不建议使用自动属性
为什么要序列化:
将一个复杂的对象转换流,方便存储与信息交换。
class Program
{
static void Main(string[] args)
{
Person person = new Person();
person.Name = "张三";
person.Age = ;
// json 序列化 变成字符串
JavaScriptSerializer javaScriptSerializer = new JavaScriptSerializer();
string msg = javaScriptSerializer.Serialize(person);
Console.WriteLine(msg);
}
}
class Person
{
public string Name { get; set; }
public int Age { get; set; }
}
二进制序列化:
就是将对象变成流的过程,把对象变成byte[ ]。
class Program
{
static void Main(string[] args)
{
Person person = new Person();
person.Name = "张三";
person.Age = ;
// 二进制序列化注意点:
//1、被序列化对象类型必须标记为可序列化
//2、被序列化的所有父类也必须标记为可序列化
//3、被序列化的对象的类型中字段的类型也要标记 //二进制序列化步骤:
//1、创建序列化器
BinaryFormatter bf = new BinaryFormatter();
// 1.1 创建一个文件流。
using(FileStream fsWrite =new FileStream("person.bin", FileMode.Create))
{
//2、开始执行序列化。
bf.Serialize(fsWrite, person);
}
Console.WriteLine("序列化完毕"); }
}
[Serializable]
class Person:Animal
{
public string Name { get; set; }
public int Age { get; set; }
public Car BenChi { get; set; }
}
[Serializable]
public class Animal
{
public void Eat()
{
Console.WriteLine("eat food...");
}
}
[Serializable]
public class Car
{ }
反序列化:
class Program
{
static void Main(string[] args)
{
//二进制反序列化注意的问题:
//1、必须获取被系列化的对象的类型所在的程序集。因为它要根据序列化文件还原该对象,而序列化文件中
//只包含数据信息,而不包含其类型的相关信息、方法相关信息等,这些信息在对象序列文件中都没有。 //步骤:
//1、创建序列化器。
BinaryFormatter bf = new BinaryFormatter();
//1.1 创建读取文件的文件流。
using(FileStream fsRead=new FileStream("person.bin", FileMode.Open))
{
//2、执行反序列化。
object obj = bf.Deserialize(fsRead);
Person person = (Person)obj;
Console.WriteLine(person.Name);
}
Console.WriteLine("ok"); }
}
[Serializable]
class Person
{
public string Name { get; set; }
public int Age { get; set; }
}
练习:添加对象到array list中,进行序列化和反序列化。
序列化:
class Program
{
static void Main(string[] args)
{
ArrayList arrayList = new ArrayList();
arrayList.Add("张三");
arrayList.Add();
//创建序列化容器
BinaryFormatter bf = new BinaryFormatter();
//创建文件流
using(FileStream fs=new FileStream("txt.txt", FileMode.Create))
{
//执行序列化
bf.Serialize(fs, arrayList);
}
Console.WriteLine("序列化完毕"); }
}
反序列化:
class Program
{
static void Main(string[] args)
{
//创建序列化容器
BinaryFormatter bf = new BinaryFormatter();
//创建读取的文件流
using(FileStream fs=new FileStream("txt.txt", FileMode.Open))
{
//执行反序列化
object obj= bf.Deserialize(fs);
ArrayList arrayList = (ArrayList)obj;
foreach (var item in arrayList)
{
Console.WriteLine(item);
}
} }
}
C#序列化与反序列化。的更多相关文章
- C# 序列化与反序列化几种格式的转换
这里介绍了几种方式之间的序列化与反序列化之间的转换 首先介绍的如何序列化,将object对象序列化常见的两种方式即string和xml对象; 第一种将object转换为string对象,这种比较简单没 ...
- 使用Newtonsoft.Json.dll(JSON.NET)动态解析JSON、.net 的json的序列化与反序列化(一)
在开发中,我非常喜欢动态语言和匿名对象带来的方便,JSON.NET具有动态序列化和反序列化任意JSON内容的能力,不必将它映射到具体的强类型对象,它可以处理不确定的类型(集合.字典.动态对象和匿名对象 ...
- Java 序列化与反序列化
1.什么是序列化?为什么要序列化? Java 序列化就是指将对象转换为字节序列的过程,而反序列化则是只将字节序列转换成目标对象的过程. 我们都知道,在进行浏览器访问的时候,我们看到的文本.图片.音频. ...
- C#中怎样实现序列化和反序列化
我们想要将数据进行持久化的操作的话,也就是将数据写入到文件中,我们在C#中可以通过IO流来操作,同时也可以通过序列化来操作,本人是比较推荐使用序列化操作的 因为我们如果想要将一个对象持久化到文件中 如 ...
- Java序列化与反序列化
Java序列化与反序列化是什么?为什么需要序列化与反序列化?如何实现Java序列化与反序列化?本文围绕这些问题进行了探讨. 1.Java序列化与反序列化 Java序列化是指把Java对象转换为字节序列 ...
- XPatchLib 对象增量数据序列化及反序列化器 For .Net
在日常的软件开发和使用过程中,我们发现同一套系统的同一配置项在不同的客户环境中是存在各种各样的差异的.在差异较为分散时,如何较好的管理这些差异,使得维护过程能够更加安全和快速,一直在这样那样的困扰着开 ...
- c# Json 自定义类作为字典键时,序列化和反序列化的处理方法
一般情况下,Newtonsoft.Json.dll 对 Dictionary<int,object>.Dictionary<string,object>等序列化与反序列化都是成 ...
- java 对象序列化与反序列化
Java序列化与反序列化是什么? 为什么需要序列化与反序列化? 如何实现Java序列化与反序列化? 本文围绕这些问题进行了探讨. 1.Java序列化与反序列化 Java序列化是指把Java对象转换为 ...
- 序列化,反序列化和transient关键字
一.序列化和反序列化的概念 序列化:指把java对象转换为字节序列的过程. 反序列化:指把字节序列恢复为java对象的过程. 对象的序列化主要有两种用途: 1) 把对象的字节序列保存到硬盘上,通常存放 ...
- C#对象序列化与反序列化zz
C#对象序列化与反序列化(转载自:http://www.cnblogs.com/LiZhiW/p/3622365.html) 1. 对象序列化的介绍........................ ...
随机推荐
- win7里linux虚拟机安装vmware tools(ubuntu12.04)
安装Vmware Tools工具 1.安装linux虚拟机(略) 2.虚拟机去启动,选择虚拟机à设置,“硬件”中选择CD/DVD(IDE),右侧选择“使用ISO镜像文件(M)” -- 文件选择vmw ...
- mvc项目 ajax post 返回404错误
后台代码没有问题,但是一直出现404错误 原因:iis设置,请求中文件大小超过限制会被过滤掉,直接返回404. 解决:设置iis,应用程序->请求筛选->规则->编辑功能设置-> ...
- React了解
根据博主 http://www.ruanyifeng.com/blog/2015/03/react.html 的几个Demo(https://github.com/ruanyf/react-dem ...
- JSTL配置文件下载地址
Apache Tomcat安装JSTL 库步骤如下: 从Apache的标准标签库中下载的二进包(jakarta-taglibs-standard-current.zip). 官方下载地址:http:/ ...
- ansible 关闭ssh首次连接时提示
关闭ssh首次连接时提示. 修改/etc/ansible/ansible.cfg配置文件 方法一:(推荐,配置文件中存在) host_key_checking = False 方法二: ssh_arg ...
- 【分布式缓存系列】集群环境下Redis分布式锁的正确姿势
一.前言 在上一篇文章中,已经介绍了基于Redis实现分布式锁的正确姿势,但是上篇文章存在一定的缺陷——它加锁只作用在一个Redis节点上,如果通过sentinel保证高可用,如果master节点由于 ...
- Python编程练习:编程实现恺撒密码
问题描述:凯撒密码是古罗马凯撒大帝用来对军事情报进行加解密的算法,它采用了替换方法对信息中的每一个英文字符循环替换为字母表序列中该字符后面的第三个字符,即,字母表的对应关系如下: 原文:A B C D ...
- Java实现链表的常见操作算法
链表分为单链表,双向链表和循环链表,是一种链式存储结构,由一个个结点链式构成,结点包含数据域和指针域,其中单链表是只有一个指向后驱结点的指针,双向链表除头结点和尾结点外,每个结点都有一个前驱指针和一个 ...
- 简单读!spring-mvc源码之穿越http请求
相信spring-mvc这种被玩坏了的架构理念,大家都烂熟于胸了,不过还是想来扒一扒他的细节. 一个http请求,怎么样被 spring 接收,又怎样做出响应呢? 一般地,我们会配置一个 web.xm ...
- Solr搜索引擎入门知识汇总
1.技术选型,为什么用solr而不用lucene,或者其他检索工具 lucene:需要开发者自己维护索引文件,在多机环境中备份同步索引文件很是麻烦 Lucene本质上是搜索库,不是独立的应用程序.而S ...