阅读目录

1、介绍

2、二进制序列化&反序列化

  2.1、二进制序列化&反序列化介绍

  2.2、BinaryFormatter使用

  2.3、自定义序列化

3、XML序列化&反序列化

  3.1、XML序列化&反序列化介绍

  3.2、XmlSerializer使用

  3.3、控制 XML 序列化的属性

  3.4、重写默认序列化逻辑

  3.5、将对象序列化为SOAP编码的XML流

4、JSON序列化&反序列化

  4.1、JSON序列化  

  4.2、使用System.Text.Json序列化&反序列化

  4.3、使用Newtonsoft.Json序列化&反序列化

  4.4、System.Text.Json和Newtonsoft.Json的一些差异

5、参考

返回系列文章目录 

 

案例代码下载

1、介绍

  序列化:将对象的状态信息及类型信息,转换为一种易于传输或存储形式(流,即字节序列)的过程。

  反序列化:与序列化相反,将流转换为对象的过程。

C#技术栈入门到精通系列6——序列化&反序列化

 

.NET有以下序列化技术:

二进制序列化:保持类型保真,这对于多次调用应用程序时保持对象状态非常有用。 例如,通过将对象序列化到剪贴板,可在不同的应用程序之间共享对象。 您可以将对象序列化到流、磁盘、内存和网络等。 远程处理使用序列化,“按值”在计算机或应用程序域之间传递对象。

XML和SOAP序列化:只序列化公共属性和字段,并且不保持类型保真。 当您希望提供或使用数据而不限制使用该数据的应用程序时,这一点非常有用。 由于 XML 是开放式的标准,因此它对于通过 Web 共享数据来说是一个理想选择。 SOAP 同样是开放式的标准,这使它也成为一个理想选择。

JSON序列化:只序列化公共属性,并且不保持类型保真。 JSON 是开放式的标准,对于通过 Web 共享数据来说是一个理想选择。

 

2、二进制序列化&反序列化

2.1、二进制序列化&反序列化介绍

  二进制序列化是将.NET对象转换为数据流,存放到内存中。需要注意两点:①二进制序列化的时候,可以将对象的所有属性进行序列化,包括私有属性。②在反序列化的时候,不会调用无参的构造函数,可以借用这点来进行对象的深拷贝。序列化和反序列化可以通过BinaryFormatter类来实现的,这个类位于System.Runtime.Serialization.Formatters.Binary命名空间下。要使一个类能够序列化,需要使用Serializable属性标记类,如果不想被二进制序列化,在属性字段上使用NonSerialized标记。

 

2.2、BinaryFormatter使用

 1 [Serializable]
 2     public class SerializeObject
 3     {
 4         public string Name { get; set; }
 5         //二进制序列化会把所有的属性字段都序列化,包括私有private,
 6         //如果不想序列化,使用特性[NonSerialized]
 7         private string _desc { get; set; }
 8         public int _Age;
 9         [NonSerialized]
10         private bool _sex;
11         public SerializeObject(string name,string desc,int age,bool sex)
12         {
13             this.Name = name;
14             this._desc = desc;
15             this._Age = age;
16             this._sex = sex;
17         }
18     }
SerializeObject

相关文章:

  • 2022-02-14
  • 2021-09-16
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-07-20
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-02-18
相关资源
相似解决方案