下面是 "浅谈C# 序列化与反序列化几种格式的转换" 的完整攻略:
目录
- 什么是序列化与反序列化
- 为什么需要序列化与反序列化
- C# 中实现序列化与反序列化的几种方式
- XML 序列化与反序列化
- JSON 序列化与反序列化
- Binary 序列化与反序列化
- 示例说明
- XML 序列化与反序列化示例
- JSON 序列化与反序列化示例
什么是序列化与反序列化
序列化(Serialization)是指将对象转换为可以存储或传输的格式的过程。反序列化(Deserialization)是指将序列化的数据转换回对象的过程。
为什么需要序列化与反序列化
在项目中,我们需要将对象保存到数据库、磁盘或通过网络传输等方式进行存储或传输。但是,这些操作只能传输二进制流数据,无法直接传输对象。因此,我们需要将对象转换成二进制格式进行传输,这个转换过程就是序列化。
同样地,接收方需要将二进制数据转换为可操作的对象,这个过程就是反序列化。
C# 中实现序列化与反序列化的几种方式
C# 中提供了多种序列化和反序列化的方式,下面我们将介绍三种常用的方式。
XML 序列化与反序列化
XML 是一种常用的格式,它被广泛用于 Web 服务、配置文件和数据交换等场景。C# 提供了 XmlSerializer 类来完成 XML 序列化和反序列化的工作。
// Xml 序列化
XmlSerializer serializer = new XmlSerializer(typeof(Student));
using (StreamWriter sw = new StreamWriter("student.xml"))
{
serializer.Serialize(sw, student);
}
// Xml 反序列化
XmlSerializer serializer = new XmlSerializer(typeof(Student));
using (StreamReader sr = new StreamReader("student.xml"))
{
Student student = (Student)serializer.Deserialize(sr);
}
JSON 序列化与反序列化
JSON 是一种轻量级的数据交换格式,它的格式比 XML 简洁,更适合在 Web 中使用。C# 提供了 JavaScriptSerializer 类来完成 JSON 序列化和反序列化的工作。
// JSON 序列化
JavaScriptSerializer serializer = new JavaScriptSerializer();
string jsonString = serializer.Serialize(student);
File.WriteAllText("student.json", jsonString);
// JSON 反序列化
string jsonString = File.ReadAllText("student.json");
JavaScriptSerializer serializer = new JavaScriptSerializer();
Student student = serializer.Deserialize<Student>(jsonString);
Binary 序列化与反序列化
Binary 是一种 C# 独有的序列化方式,相比其他格式,它更快速,所需存储空间更小。C# 中提供了 BinaryFormatter 类来完成二进制格式的序列化和反序列化。
// Binary 序列化
BinaryFormatter serializer = new BinaryFormatter();
using (FileStream fs = new FileStream("student.dat", FileMode.Create))
{
serializer.Serialize(fs, student);
}
// Binary 反序列化
BinaryFormatter serializer = new BinaryFormatter();
using (FileStream fs = new FileStream("student.dat", FileMode.Open))
{
Student student = (Student)serializer.Deserialize(fs);
}
示例说明
下面我们将使用一个 Student 类来进行示例说明。
[Serializable]
public class Student
{
public int Id { get; set; }
public string Name { get; set; }
public int Age { get; set; }
}
XML 序列化与反序列化示例
// Xml 序列化
XmlSerializer serializer = new XmlSerializer(typeof(Student));
using (StreamWriter sw = new StreamWriter("student.xml"))
{
serializer.Serialize(sw, student);
}
// Xml 反序列化
XmlSerializer serializer = new XmlSerializer(typeof(Student));
using (StreamReader sr = new StreamReader("student.xml"))
{
Student student = (Student)serializer.Deserialize(sr);
}
JSON 序列化与反序列化示例
// JSON 序列化
JavaScriptSerializer serializer = new JavaScriptSerializer();
string jsonString = serializer.Serialize(student);
File.WriteAllText("student.json", jsonString);
// JSON 反序列化
string jsonString = File.ReadAllText("student.json");
JavaScriptSerializer serializer = new JavaScriptSerializer();
Student student = serializer.Deserialize<Student>(jsonString);
以上就是 "浅谈C# 序列化与反序列化几种格式的转换" 的完整攻略了。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:浅谈C# 序列化与反序列化几种格式的转换 - Python技术站