序列化介绍:

把对象用一种新的格式来表示。

系列化只序列化数据。

序列化不建议使用自动属性

为什么要序列化:

将一个复杂的对象转换流,方便存储与信息交换。

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#序列化与反序列化。的更多相关文章

  1. C# 序列化与反序列化几种格式的转换

    这里介绍了几种方式之间的序列化与反序列化之间的转换 首先介绍的如何序列化,将object对象序列化常见的两种方式即string和xml对象; 第一种将object转换为string对象,这种比较简单没 ...

  2. 使用Newtonsoft.Json.dll(JSON.NET)动态解析JSON、.net 的json的序列化与反序列化(一)

    在开发中,我非常喜欢动态语言和匿名对象带来的方便,JSON.NET具有动态序列化和反序列化任意JSON内容的能力,不必将它映射到具体的强类型对象,它可以处理不确定的类型(集合.字典.动态对象和匿名对象 ...

  3. Java 序列化与反序列化

    1.什么是序列化?为什么要序列化? Java 序列化就是指将对象转换为字节序列的过程,而反序列化则是只将字节序列转换成目标对象的过程. 我们都知道,在进行浏览器访问的时候,我们看到的文本.图片.音频. ...

  4. C#中怎样实现序列化和反序列化

    我们想要将数据进行持久化的操作的话,也就是将数据写入到文件中,我们在C#中可以通过IO流来操作,同时也可以通过序列化来操作,本人是比较推荐使用序列化操作的 因为我们如果想要将一个对象持久化到文件中 如 ...

  5. Java序列化与反序列化

    Java序列化与反序列化是什么?为什么需要序列化与反序列化?如何实现Java序列化与反序列化?本文围绕这些问题进行了探讨. 1.Java序列化与反序列化 Java序列化是指把Java对象转换为字节序列 ...

  6. XPatchLib 对象增量数据序列化及反序列化器 For .Net

    在日常的软件开发和使用过程中,我们发现同一套系统的同一配置项在不同的客户环境中是存在各种各样的差异的.在差异较为分散时,如何较好的管理这些差异,使得维护过程能够更加安全和快速,一直在这样那样的困扰着开 ...

  7. c# Json 自定义类作为字典键时,序列化和反序列化的处理方法

    一般情况下,Newtonsoft.Json.dll 对 Dictionary<int,object>.Dictionary<string,object>等序列化与反序列化都是成 ...

  8. java 对象序列化与反序列化

    Java序列化与反序列化是什么? 为什么需要序列化与反序列化? 如何实现Java序列化与反序列化? 本文围绕这些问题进行了探讨. 1.Java序列化与反序列化  Java序列化是指把Java对象转换为 ...

  9. 序列化,反序列化和transient关键字

    一.序列化和反序列化的概念 序列化:指把java对象转换为字节序列的过程. 反序列化:指把字节序列恢复为java对象的过程. 对象的序列化主要有两种用途: 1) 把对象的字节序列保存到硬盘上,通常存放 ...

  10. C#对象序列化与反序列化zz

      C#对象序列化与反序列化(转载自:http://www.cnblogs.com/LiZhiW/p/3622365.html) 1. 对象序列化的介绍........................ ...

随机推荐

  1. thinkphp添加数据 add()方法

    thinkphpz内置的add()方法用于向数据库表添加数据,相当于SQL中的INSERT INTO 行为添加数据 add 方法是 CURD(Create,Update,Read,Delete / 创 ...

  2. 解决nginx下connect() to 127.0.0.1:3000 failed (13: Permission denied) while connecting to upstream, client: 127.0.0.1, server: 错误信息

    尝试搭建nginx负载均衡,做域名转发时报如上错误,困扰了好长时间还好没放弃,还好百度找到解决办法: 是SeLinux导致: 1.执行下面的命令 setsebool -P httpd_can_netw ...

  3. Redis-09.慢查询

    慢查询指的是redis命令的执行时间,不包括网络传输和排队时间. Redis配置文件redis.conf中描述慢查询相关的选项在SLOW LOG部分 ######################### ...

  4. C#.NET开源项目、机器学习、Power BI

    [总目录]本博客博文总目录-实时更新   阅读目录 1.开源Math.NET基础数学类库使用系列 2.C#操作Excel组件Spire.XLS文章目录 3.彩票数据资料库文章 4.数据挖掘与机器学习相 ...

  5. 如何将自己的jar包发布到mavan中央仓库

    最近自己写了一个关于网关限流的插件,然后想着肯定会有很多兄弟也需要使用到,所以就想着把jar包上传到Maven的中央仓库上让大家可以更方便的使用 现在咱们来看一下这个流程是什么样的呢. 首先呢,你得去 ...

  6. Pycharm用Ctrl+鼠标滚轮控制字体大小

    一.pycharm字体放大的设置 File —> setting —> Keymap —>在搜寻框中输入:increase —> Increase Font Size(双击) ...

  7. 使用idea配置tomcat将web项目跑起来

    链接:https://www.cnblogs.com/avivaye/p/6437555.html

  8. jQuery之animate()用法

    最近在学习jQuery,看到一个很有意思的函数animate(),但是在网上却没有查到相关的详细资料,于是打算参考jQuery API,自己总结一下. 概述 animate() 方法执行 CSS 属性 ...

  9. git提示error setting certificate verify locations以及fatal: unable to access 的解决办法

    z当使用git ------上传文件到GitHub上时!~~~出现了以下错误  :fatal: unable to access ' 可以采用以下解决方式: 修改GitHub上的地址格式=====ht ...

  10. 【spring】task 任务调度(定时任务)

    1.定时任务的几种实现可以看这里:http://gong1208.iteye.com/blog/1773177 2.需要导入spring的jar包,可以参看之前的[spring]相关文章 3.这里使用 ...