二进制序列化器:
在.NET中,可以使用BinaryFormatter
来进行二进制序列化。这是一个.NET框架的序列化工具,可以将对象序列化为二进制格式,并可以将二进制数据反序列化为对象。
/// <summary>
/// 二进制序列化器、
/// 最节省流量,压缩程度最大的序列化器
/// </summary>
public static void BinarySerialize()
{
//文件路径
string fileName = "文件.txt";
//需要一个stream,这里是直接把数据写入文件了
using (Stream sm = new FileStream(fileName, FileMode.Create, FileAccess.Read))
{
//获取数据
List<Programmer> pList = DataFactory.BuildProgrammerList();
//创建二进制序列化器
BinaryFormatter binformat = new BinaryFormatter();
//写入文件
binformat.Serialize(sm, pList);
}
//反序列化成对象,从文件中获取数据
using(Stream sm = new FileStream(fileName, FileMode.Open, FileAccess.ReadWrite))
{
//创建二进制序列化器
BinaryFormatter binformat = new BinaryFormatter();
//重置流位置
sm.Position = 0;
//反序列化
List<Programmer> pList = (List<Programmer>)binformat.Deserialize(sm);
}
}
XML序列化器:
在.NET中,可以使用System.Xml.Serialization
命名空间下的XmlSerializer
类来实现XML序列化。
/// <summary>
/// XML序列化器
/// </summary>
public static void XmlSerialize()
{
//文件路径
string filePath = "";
using(Stream sm = new FileStream(filePath, FileMode.Create, FileAccess.Read))
{
List<Programmer> pList = DataFactory.BuildProgrammerList();
//创建xml序列化器,需要指定对象的类型
XmlSerializer xmlFormat = new XmlSerializer(typeof(List<Programmer>));
//写入文件
xmlFormat.Serialize(sm, pList);
}
using (Stream sm = new FileStream(filePath, FileMode.Create, FileAccess.ReadWrite))
{
//创建xml序列化器
XmlSerializer xmlFormat = new XmlSerializer(typeof(List<Programmer>));
//反序列化成对象
List<Programmer> pList = (List<Programmer>)xmlFormat.Deserialize(sm);
}
}
SOAP序列化器:
在.NET中,SOAP(Simple Object Access Protocol)是用于交换结构化信息的协议,主要用于Web服务中。SOAP可以运行在HTTP或其他网络传输协议上,并使用XML来封装它的信息。
在.NET中,SOAP的序列化和反序列化通常是通过System.Runtime.Serialization.Formatters.Soap命名空间下的类来完成的。
/// <summary>
/// soap序列化器
/// </summary>
public static void SoapSerialize()
{
//文件路径
string filePath = "文件.txt";
//需要一个Stream,这里直接把数据写入文件了
using (Stream sm = new FileStream(filePath, FileMode.Create, FileAccess.Read))
{
//获取数据
List<Programmer> pList = DataFactory.BuildProgrammerList();
//创建soap序列化器
SoapFormatter soapFormt = new SoapFormatter();
//写入文件
soapFormt.Serialize(sm, pList);
}
//反序列化
using (Stream sm = new FileStream(filePath, FileMode.Open, FileAccess.ReadWrite))
{
//创建soap序列化器
SoapFormatter soapFormat = new SoapFormatter();
//序列化成对象
List<Programmer> pList = (List<Programmer>)soapFormat.Deserialize(sm);
}
}
JSON序列化器:
Newtonsoft.Json是.NET生态系统中最流行和广泛使用的JSON序列化和反序列化工具。它具有丰富的功能和灵活的API,支持自定义序列化和反序列化过程。它的性能表现良好,具有广泛的社区支持。
List<User> userList = new List<User>();
userList.Add(new User { Id = 1, Name = "test1", Age = 20 });
userList.Add(new User { Id = 2, Name = "test2", Age = 30 });
//Json
{
//序列化
string userListJson = JsonConvert.SerializeObject(userList);
Console.WriteLine($"json:{userListJson}");
//反序列化
List<User> desrialUserList = JsonConvert.DeserializeObject<List<User>>(userListJson);
}