How to perform data serialization using C#?
There are multiple ways to serialize data in C#, with the most common being using BinaryFormatter, XmlSerializer, and DataContractSerializer. Below are the ways to use each of these three methods:
- The BinaryFormatter is a tool used for converting data into a binary format.
using System;
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;
[Serializable]
public class MyClass
{
public int Number { get; set; }
public string Text { get; set; }
}
public static void Main()
{
MyClass obj = new MyClass() { Number = 1, Text = "Hello, World!" };
// 序列化
BinaryFormatter formatter = new BinaryFormatter();
using (FileStream fileStream = new FileStream("data.bin", FileMode.Create))
{
formatter.Serialize(fileStream, obj);
}
// 反序列化
using (FileStream fileStream = new FileStream("data.bin", FileMode.Open))
{
MyClass deserializedObj = (MyClass)formatter.Deserialize(fileStream);
Console.WriteLine($"Number: {deserializedObj.Number}, Text: {deserializedObj.Text}");
}
}
- The XML Serializer.
using System;
using System.IO;
using System.Xml.Serialization;
[Serializable]
public class MyClass
{
public int Number { get; set; }
public string Text { get; set; }
}
public static void Main()
{
MyClass obj = new MyClass() { Number = 1, Text = "Hello, World!" };
// 序列化
XmlSerializer serializer = new XmlSerializer(typeof(MyClass));
using (FileStream fileStream = new FileStream("data.xml", FileMode.Create))
{
serializer.Serialize(fileStream, obj);
}
// 反序列化
using (FileStream fileStream = new FileStream("data.xml", FileMode.Open))
{
MyClass deserializedObj = (MyClass)serializer.Deserialize(fileStream);
Console.WriteLine($"Number: {deserializedObj.Number}, Text: {deserializedObj.Text}");
}
}
- – Serializer for DataContract
using System;
using System.IO;
using System.Runtime.Serialization;
[DataContract]
public class MyClass
{
[DataMember]
public int Number { get; set; }
[DataMember]
public string Text { get; set; }
}
public static void Main()
{
MyClass obj = new MyClass() { Number = 1, Text = "Hello, World!" };
// 序列化
DataContractSerializer serializer = new DataContractSerializer(typeof(MyClass));
using (FileStream fileStream = new FileStream("data.xml", FileMode.Create))
{
serializer.WriteObject(fileStream, obj);
}
// 反序列化
using (FileStream fileStream = new FileStream("data.xml", FileMode.Open))
{
MyClass deserializedObj = (MyClass)serializer.ReadObject(fileStream);
Console.WriteLine($"Number: {deserializedObj.Number}, Text: {deserializedObj.Text}");
}
}
The above are three commonly used C# data serialization methods, choose the appropriate method based on actual needs.