📅  最后修改于: 2023-12-03 15:00:17.345000             🧑  作者: Mango
C#反序列化(C# Deserialization)是将序列化后的二进制数据还原成原来的对象。序列化(Serialization)是将对象转换为二进制数据以便在网络传输、存储等场景下使用。
C#反序列化使用的主要类是System.Runtime
中的DataContractSerializer
类,它可以将对象序列化为XML或JSON格式的数据。
using System.Runtime.Serialization;
using System.IO;
// 定义一个类
[DataContract]
public class Person
{
[DataMember]
public int Id { get; set; }
[DataMember]
public string Name { get; set; }
[DataMember]
public int Age { get; set; }
}
// 反序列化XML格式数据
DataContractSerializer dcs = new DataContractSerializer(typeof(Person));
MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(xmlData)); // xmlData为待反序列化的数据
Person person = (Person)dcs.ReadObject(ms);
using System.Runtime.Serialization.Json;
using System.IO;
// 定义一个类
[DataContract]
public class Person
{
[DataMember]
public int Id { get; set; }
[DataMember]
public string Name { get; set; }
[DataMember]
public int Age { get; set; }
}
// 反序列化JSON格式数据
DataContractJsonSerializer dcs = new DataContractJsonSerializer(typeof(Person));
MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(jsonData)); // jsonData为待反序列化的数据
Person person = (Person)dcs.ReadObject(ms);
在进行C#反序列化时,需要保证反序列化的类与序列化时的类是一致的,即包含相同的字段和属性,且顺序也要一致。在序列化和反序列化时,应该使用相同的编码格式(如UTF-8)和字符集(如ASCII)以避免乱码问题。