1. JsonSerializer序列化与反序列化核心解析
在.NET生态中处理JSON数据就像在邮局寄送包裹——需要把对象打包成标准格式(序列化),接收方再拆包还原(反序列化)。System.Text.Json中的JsonSerializer就是专门干这活的工具类,相比第三方库,它原生集成、性能优异,特别适合现代.NET应用开发。
我经历过从Newtonsoft.Json迁移到System.Text.Json的全过程,实测在ASP.NET Core 6+项目中,原生序列化器能减少30%的内存分配。下面从实战角度拆解其核心用法,包含你可能在官方文档里找不到的12个细节技巧。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 基础序列化操作
2.1 简单对象序列化
csharp复制var product = new Product
{
Id = 101,
Name = "无线机械键盘",
Price = 299.99m,
ReleaseDate = DateTime.Now
};
string json = JsonSerializer.Serialize(product);
这段代码会产生如下JSON:
json复制{
"Id": 101,
"Name": "无线机械键盘",
"Price": 299.99,
"ReleaseDate": "2023-08-20T14:30:22.1234567+08:00"
}
关键细节:DateTime默认输出ISO 8601格式,小数类型会保留所有精度。这在金融计算中可能引发问题,后续会讲解如何控制。
2.2 序列化配置选项
实际项目中最常用的配置项:
csharp复制var options = new JsonSerializerOptions
{
WriteIndented = true, // 美化输出
PropertyNamingPolicy = JsonNamingPolicy.CamelCase, // 属性名转驼峰
Encoder = JavaScriptEncoder.UnsafeRelaxedJsonEscaping, // 宽松字符转义
DefaultIgnoreCondition = J
