序列化介绍:

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

系列化只序列化数据。

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

为什么要序列化:

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

  1. class Program
  2. {
  3. static void Main(string[] args)
  4. {
  5. Person person = new Person();
  6. person.Name = "张三";
  7. person.Age = ;
  8. // json 序列化 变成字符串
  9. JavaScriptSerializer javaScriptSerializer = new JavaScriptSerializer();
  10. string msg = javaScriptSerializer.Serialize(person);
  11. Console.WriteLine(msg);
  12. }
  13. }
  14. class Person
  15. {
  16. public string Name { get; set; }
  17. public int Age { get; set; }
  18. }

二进制序列化:

就是将对象变成流的过程,把对象变成byte[ ]。

  1. class Program
  2. {
  3. static void Main(string[] args)
  4. {
  5. Person person = new Person();
  6. person.Name = "张三";
  7. person.Age = ;
  8. // 二进制序列化注意点:
  9. //1、被序列化对象类型必须标记为可序列化
  10. //2、被序列化的所有父类也必须标记为可序列化
  11. //3、被序列化的对象的类型中字段的类型也要标记
  12.  
  13. //二进制序列化步骤:
  14. //1、创建序列化器
  15. BinaryFormatter bf = new BinaryFormatter();
  16. // 1.1 创建一个文件流。
  17. using(FileStream fsWrite =new FileStream("person.bin", FileMode.Create))
  18. {
  19. //2、开始执行序列化。
  20. bf.Serialize(fsWrite, person);
  21. }
  22. Console.WriteLine("序列化完毕");
  23.  
  24. }
  25. }
  26. [Serializable]
  27. class Person:Animal
  28. {
  29. public string Name { get; set; }
  30. public int Age { get; set; }
  31. public Car BenChi { get; set; }
  32. }
  33. [Serializable]
  34. public class Animal
  35. {
  36. public void Eat()
  37. {
  38. Console.WriteLine("eat food...");
  39. }
  40. }
  41. [Serializable]
  42. public class Car
  43. {
  44.  
  45. }

反序列化:

  1. class Program
  2. {
  3. static void Main(string[] args)
  4. {
  5. //二进制反序列化注意的问题:
  6. //1、必须获取被系列化的对象的类型所在的程序集。因为它要根据序列化文件还原该对象,而序列化文件中
  7. //只包含数据信息,而不包含其类型的相关信息、方法相关信息等,这些信息在对象序列文件中都没有。
  8.  
  9. //步骤:
  10. //1、创建序列化器。
  11. BinaryFormatter bf = new BinaryFormatter();
  12. //1.1 创建读取文件的文件流。
  13. using(FileStream fsRead=new FileStream("person.bin", FileMode.Open))
  14. {
  15. //2、执行反序列化。
  16. object obj = bf.Deserialize(fsRead);
  17. Person person = (Person)obj;
  18. Console.WriteLine(person.Name);
  19. }
  20. Console.WriteLine("ok");
  21.  
  22. }
  23. }
  24. [Serializable]
  25. class Person
  26. {
  27. public string Name { get; set; }
  28. public int Age { get; set; }
  29. }

练习:添加对象到array list中,进行序列化和反序列化。

序列化:

  1. class Program
  2. {
  3. static void Main(string[] args)
  4. {
  5. ArrayList arrayList = new ArrayList();
  6. arrayList.Add("张三");
  7. arrayList.Add();
  8. //创建序列化容器
  9. BinaryFormatter bf = new BinaryFormatter();
  10. //创建文件流
  11. using(FileStream fs=new FileStream("txt.txt", FileMode.Create))
  12. {
  13. //执行序列化
  14. bf.Serialize(fs, arrayList);
  15. }
  16. Console.WriteLine("序列化完毕");
  17.  
  18. }
  19. }

反序列化:

  1. class Program
  2. {
  3. static void Main(string[] args)
  4. {
  5. //创建序列化容器
  6. BinaryFormatter bf = new BinaryFormatter();
  7. //创建读取的文件流
  8. using(FileStream fs=new FileStream("txt.txt", FileMode.Open))
  9. {
  10. //执行反序列化
  11. object obj= bf.Deserialize(fs);
  12. ArrayList arrayList = (ArrayList)obj;
  13. foreach (var item in arrayList)
  14. {
  15. Console.WriteLine(item);
  16. }
  17. }
  18.  
  19. }
  20. }

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. ios uibutton加数字角标

    http://www.jianshu.com/p/0c7fae1cadac 第一种:https://github.com/mikeMTOL/UIBarButtonItem-Badge第二种:https ...

  2. 转:酷我音乐API

    酷我音乐API 本次分析的是酷我音乐API 歌曲搜索API:http://search.kuwo.cn/r.s?all={0}&ft=music&itemset=web_2013&am ...

  3. python基础自学 第四天

    break和continue break:某一条件满足,退出循环,不在执行后续重复代码 continue:某一条件满足时,不执行后续重复的代码 注意:在循环中,如果使用continue这个关键字,使用 ...

  4. autotrace执行计划中,统计信息详解

    全表扫描是怎么扫描的? oracle最小的存储单位是block 物理上连续的block组成了extent(也就是说一个区中的所有块在物理上是连续的) 很多个extent组成了segment(一个seg ...

  5. Web browser的发展史

        浏览器是个显示网页伺服器或档案系统内的HTML文件,并让用户与此些文件互动的一种软件.个人电脑上常见的网页浏览器包括微软的Internet Explorer.Moailla的Firefox.O ...

  6. .Net程序员 初学Ubuntu ,配置Nignix

    1.安装VM虚拟机 2.升级VI编辑器 3.安装Nginx 4.测试localhost 5.编辑配置文件 仅仅用了记录一个过程,不会太详细 1.安装虚拟机,网上一大片,不是特别难 2.为什么要升级VI ...

  7. eclipse遇到的问题

    引用不了R文件,可能是导包导错了cannot be resolved or is not a field:首先检查你的XML是否保存了,再检查你的import导入的R文件是你包名+R还是android ...

  8. 消除浏览器对input的自动填充

    在做登录相关的页面时,常遇到这样的现象,浏览器input的自动填充行为. 原因 设置 input 的 type 属性为 password 后,当页面进行过提交,并且允许浏览器记住密码后,那么再次加载该 ...

  9. requests 处理异常错误 requests.exceptions.ConnectionError HTTPSConnectionPool [Errno 10060]

    使用python requests模块调用vmallarg.vmall.com接口API时报如下错误: requests.exceptions.ConnectionError: HTTPSConnec ...

  10. Python的 is 和 == 弄懂了吗?

    在Python中一切都是对象. Python中对象包含的三个基本要素,分别是: id(身份标识) type(数据类型) value(值) 对象之间比较是否相等可以用 == ,也可以用 is . is ...