.NET 序列化与反序列化实战
在分布式系统或数据持久化场景中,对象状态转换为可传输格式是基础需求。.NET 提供了多种机制支持这一过程,包括 JSON、XML、二进制流以及 SOAP。本文将结合实战场景,梳理不同序列化方案的选择策略与实现细节。
为什么需要序列化?
内存中的对象无法直接通过网络传输或存入磁盘。序列化将对象图转换为字节流或文本,反序列化则还原为对象实例。选择合适的方案直接影响性能、兼容性与安全性。
JSON:现代 Web 首选
对于 RESTful API 交互,JSON 是事实标准。.NET Core 推荐使用 System.Text.Json,相比旧版 Newtonsoft.Json 性能更优且无需额外依赖。
using System.Text.Json;
public class User
{
public int Id { get; set; }
public string Name { get; set; }
}
var user = new User { Id = 1, Name = "Alice" };
var json = JsonSerializer.Serialize(user);
var deserialized = JsonSerializer.Deserialize<User>(json);
注意属性命名大小写敏感,默认遵循驼峰或 Pascal 命名约定,可通过 JsonSerializerOptions 调整。
XML:遗留系统与互操作
尽管 JSON 流行,但在企业级服务或配置文件中,XML 依然常见。XmlSerializer 是内置支持,适合处理复杂结构或文档型数据。
using System.Xml.Serialization;
[Serializable]
public class Config
{
public string Key { get; set; }
}
var serializer = new XmlSerializer(typeof(Config));
using var writer = new StringWriter();
serializer.Serialize(writer, Config { Key = });

