`n C#中如何序列化和反序列化对象?

C#中如何序列化和反序列化对象?

Clock Icon 发布时间:2026/10/11 11:09  · 

在NET/" style="text-decoration: none; color: inherit;" title="C#">C#中,序列化和反序列化对象是一项常见的任务,可以通过多种方式实现,具体实现方式取决于需求。序列化的过程是将对象转换为可以存储或传输的格式,而反序列化则是将该格式转回对象。使用的格式通常为二进制或文本。通过使用`System.Text.Json`命名空间的`JsonSerializer`类,可以轻松实现序列化和反序列化功能。使用`JsonSerializer.Serialize`方法可以将对象序列化为JSON字符串。这种方式简单易用,支持多种类型的对象。示例代码如下: ```csharpusing System.Text.Json;MyClass obj = new MyClass { Property1 = "Value1", Property2 = 123 };string jsonString = JsonSerializer.Serialize(obj);```这个过程将对象转换为JSON格式字符串。
反序列化可以使用`JsonSerializer.Deserialize`方法,将JSON字符串转换为对象。示例代码如下: ```csharpMyClass deserializedObj = JsonSerializer.Deserialize(jsonString);```这一步骤能够恢复原始对象,使得系统可以继续使用该对象的功能。
可以通过`XmlSerializer`进行XML格式的序列化与反序列化。在许多需要与旧系统或其他平台保持兼容的场景下,XML是一个常见的选择。在使用之前,需要将目标类标记为可序列化。使用`XmlSerializer`时,需要实际定义对象的类型。示例代码如下: ```csharpusing System.Xml.Serialization;using System.IO;XmlSerializer serializer = new XmlSerializer(typeof(MyClass));using StringWriter writer = new StringWriter();serializer.Serialize(writer, obj);string xmlString = writer.ToString();```该段代码会将`obj`对象序列化为XML格式的字符串。
进行反序列化时,可以用`XmlSerializer.Deserialize`方法,将XML字符串转回对象。示例代码如下: ```csharpusing StringReader reader = new StringReader(xmlString);MyClass deserializedObj = (MyClass)serializer.Deserialize(reader);```此过程将字符串转化为原始对象,从而便于系统继续使用。
对于需要支持复杂类型和多级结构的对象,推荐使用`DataContractSerializer`。这个类可以处理更加复杂的序列化需求,往往需要进行数据契约的定义以指定哪些字段需要被序列化。使用`DataContractSerializer`的实例代码示例如下: ```csharpusing System.Runtime.Serialization;DataContractSerializer serializer = new DataContractSerializer(typeof(MyClass));using MemoryStream stream = new MemoryStream();serializer.WriteObject(stream, obj);```此段代码将对象写入内存流并可将其保存。
在复杂的序列化和反序列化中,还应关注对象的版本管理,确保在反序列化时能处理更改后的类。对于未能正确反序列化的情况,需要注意捕获与处理可能的错误。对于每种序列化方式,务必考虑具体场景下的性能和空间占用,从而选择最合适的方法。有效地进行序列化和反序列化不仅能保护数据完整性,还能在服务端和客户端之间传递对象状态。

推荐文章

热门文章