C#实现对象序列化的三种方式

如题所述

最近有些学员向我咨询了关于序列化的问题,今天这篇文章将为大家介绍在C#上位机开发中常用的三种序列化方法。

提到序列化,很多人首先想到的是二进制序列化,但实际上,序列化有三种常见方式:二进制序列化、XML序列化和JSON序列化。每种方式都有其独特的优势和局限性,具体应用时应根据实际情况进行选择。

在实现序列化之前,我们需要做一些准备工作。C#序列化涉及对象与字符串(文件)之间的相互转换。首先,我们准备好一个实体类,例如简单的Student类:

这里我重写了ToString方法,便于后续测试时直观地查看对象值是否正确。

同时,我们准备好一个Student对象,后续将对它进行操作。

二进制序列化及反序列化的主要方式是使用BinaryFormatter类。序列化代码如下:

反序列化代码如下:

最终执行结果如下:

我们可以看到二进制序列化的结果是乱码,但可以通过反序列化获得转换后的结果。这种方法使用简单,甚至具有加密功能,但也有一些不足。

XML序列化可以提高可读性,以及对象共享和使用的灵活性。XML序列化将对象的公共字段和属性或方法的参数和返回值序列化为符合特定XML格式的流。XML序列化代码如下:

XML反序列化代码如下:

最终执行结果如下:

我们可以直观地看到XML序列化的结果,可读性大大增强,但XML也存在自身不足。

JSON序列化是目前广泛使用的一种方式。实现JSON序列化的方式有很多,我一般会使用NewSoft.Json库。通过Nuget搜索并安装该库。JSON序列化代码如下:

JSON反序列化代码如下:

最终执行结果如下:

我们可以看到JSON方式除了可读性增强外,结果也更加简洁。
温馨提示:内容为网友见解,仅供参考
无其他回答

C#实现对象序列化的三种方式
提到序列化,很多人首先想到的是二进制序列化,但实际上,序列化有三种常见方式:二进制序列化、XML序列化和JSON序列化。每种方式都有其独特的优势和局限性,具体应用时应根据实际情况进行选择。在实现序列化之前,我们需要做一些准备工作。C#序列化涉及对象与字符串(文件)之间的相互转换。首先,我们准备...

c#中序列化是什么,怎么用,什么情况下用,不用有什么后果?
4.调用序列化方法 反序列化:1.定义一个装载对象的类型 2.创建一个读出文件流 3.定义要反序列化的类型 4.调用反序列化方法 BinaryFormatter类进行序列化和反序列化,以缩略型二进制格式写到一个文件中去,速度比较快,而且写入后的文件已二进制保存有一定的保密效果。标记为NonSerialized的其他所有成员...

c#实体类序列化方法
要实现对象的序列化 首先要保证该对象可以序列化 而且 序列化只是将对象的属性进行有效的保存 对于对象的一些方法则无法实现序列化的 实现一个类可序列化的最简便的方法就是增加Serializable属性标记类 如 [Serializable()]public class MEABlock { private int m_ID;public string Caption;public MEABlock...

c#什么是序列化
3. 反序列化 反序列化是序列化的逆过程。它从序列化的字节流中恢复对象的状态信息,重新创建对象实例。在反序列化过程中,需要确保对象的类型信息与序列化时保存的相同,以确保正确恢复对象的原始状态。在C#中,可以通过反序列化操作将序列化的字节流还原为原始的对象实例。这种机制在分布式系统和数据传输...

C#中的序列化与反射?
XmlSerializer类 DotNet中的序列化方法有三种:XML 序列化、SOAP 序列化和二进制序列化。若是序列化到文件的话,前两者生成的是 XML 文件,二进制序列化生成二进制文件。比如我做一个软件的配置信息,或者网站的配置,就像数据库连接地址等,我们的配置信息是一个类来管理的,而在磁盘上对应一个xml文件...

c#实现JSON序列化和反序列化?
在C#中实现JSON序列化和反序列化可以通过.NET框架或.NET Core的内置库,如System.Text.Json或Newtonsoft.Json来完成。以下是使用System.Text.Json库的示例:首先,确保添加System.Text.Json命名空间:using System.Text.Json; 1. JSON序列化:通过JsonSerializer的Serialize方法,可以将.NET对象转化为JSON字符...

C# C\/S反序列化对象时提示:输入流是无效的二进制格式,错误源是mscorlib...
DataTable类型不支持序列化。我看到你的类里面有个DataTable dtper

一个可序列化的C#对象,如何转成一个XML格式的文件或字符串
序列化或反序列化成一个字符串:方法一:序列化:public static string XMLSerialize<T(T entity){StringBuilder buffer = new StringBuilder();XmlSerializer serializer = new XmlSerializer(typeof(T));using (TextWriter writer = new StringWriter(buffer)){serializer.Serialize(writer, entity);}...

C# XML序列化和反序列化(DataContractSerializer)
XML序列化和反序列化在C#编程中是常用的技术,其目的是将对象转换为易于传输的数据格式。实现方式多样,常见的包括二进制、字节数组、json字符串以及xml字符串。今天我们将通过使用DataContractSerializer类的WriteObject和ReadObject方法来实现这一目标。在进行序列化时,我们需要先引用System.Runtime.Serialization...

C#中的序列化
1、为什么要序列化:首先你应该明白系列化的目的就不难理解他了。系列化的目的就是能在网络上传输对象,否则就无法实现面向对象的分布式计算。比如你的客户端要调用服务器上的一个方法获得一个产品对象,比如方法为:public Product findProduct(int product_id);注意该方法返回一个Product对象,...

相似回答
大家正在搜