.NET Core 序列化 **超清晰完整版教程**

本文将最常用的方式给你讲透 .NET Core 序列化 ,你马上就能用在 DTO、缓存、API 返回、Redis存储 里!


一、什么是序列化?(一句话)

序列化 = 把 对象 → 字符串/字节数组

反序列化 = 把 字符串/字节数组 → 对象

最常见场景:

  • API 自动把对象转 JSON 返回给前端
  • 把用户信息存缓存 / Redis(必须转字符串)
  • 跨服务传输数据

二、.NET Core 默认自带:System.Text.Json

不需要装任何包,自带、高性能、官方推荐

1. 序列化(对象 → JSON)

csharp 复制代码
using System.Text.Json;

// 定义对象
var user = new UserDto { Id = 1, UserName = "张三" };

// 序列化
string json = JsonSerializer.Serialize(user);

结果:

json 复制代码
{"Id":1,"UserName":"张三"}

2. 反序列化(JSON → 对象)

csharp 复制代码
// 把 JSON 转回对象
UserDto? user = JsonSerializer.Deserialize<UserDto>(json);

三、最常用配置(必看)

csharp 复制代码
var options = new JsonSerializerOptions
{
    // 1. 缩进格式化(好看)
    WriteIndented = true,

    // 2. 驼峰命名(userName)
    PropertyNamingPolicy = JsonNamingPolicy.CamelCase,

    // 3. 忽略空值字段
    IgnoreNullValues = true,

    // 4. 忽略大小写(反序列化时)
    PropertyNameCaseInsensitive = true
};

// 使用
string json = JsonSerializer.Serialize(user, options);

四、3 个最常用 序列化特性(标签)

直接贴在类/字段上,控制序列化行为

csharp 复制代码
public class UserDto
{
    // 1. 字段重命名
    [JsonPropertyName("userId")]
    public int Id { get; set; }

    // 2. 序列化时忽略该字段(不返回给前端)
    [JsonIgnore]
    public string Password { get; set; }

    // 3. 必须有值
    [JsonRequired]
    public string UserName { get; set; }
}

五、企业级常用工具:Newtonsoft.Json (Json.NET)

很多老项目/第三方组件用这个,用法更简单

1. 安装

复制代码
Install-Package Newtonsoft.Json

2. 序列化

csharp 复制代码
string json = JsonConvert.SerializeObject(user);

3. 反序列化

csharp 复制代码
var user = JsonConvert.DeserializeObject<UserDto>(json);

4. 特性

csharp 复制代码
[JsonProperty("userId")] // 重命名
[JsonIgnore]             // 忽略
[JsonRequired]           // 必填

六、你现在马上能用的场景

场景 1:缓存用户信息

csharp 复制代码
// 存缓存:对象 → JSON
string json = JsonSerializer.Serialize(user);
_cache.Set("user:1", json);

// 取缓存:JSON → 对象
string json = _cache.Get("user:1");
UserDto user = JsonSerializer.Deserialize<UserDto>(json);

场景 2:API 自动返回 JSON

什么都不用做 .NET Core 控制器会自动序列化

csharp 复制代码
[HttpGet]
public UserDto Get()
{
    return new UserDto { Id = 1, UserName = "张三" };
}

自动返回 JSON 给前端 ✅


七、两个序列化库怎么选?(超级简单)

  • 新项目 / 官方推荐 :System.Text.Json
  • 老项目 / 兼容需要 :Newtonsoft.Json

功能 99% 一样!


八、超级总结(背会这 4 句)

  1. 序列化 = 对象转 JSON 字符串
  2. 反序列化 = JSON 字符串转对象
  3. 特性用来控制:忽略、重命名、必填
  4. .NET Core 自带,API/缓存/Redis 都靠它
相关推荐
夜之眷属几秒前
记一次战斗服务器 CPU 打满 100% 且“无法恢复“的排查
java·linux·运维·服务器·后端·性能优化
郝学胜-神的一滴10 分钟前
C++ Templates 07:编译报错和调试手段与实战技巧
开发语言·c++·后端·软件工程·visual studio
谢亮_vipxieliang38 分钟前
PHP 8 新特性:构造器属性提升与实战
开发语言·后端·php
imDwAaY40 分钟前
Spring Boot的核心配置文件一览及其加载顺序
java·spring boot·后端
CSharp精选营1 小时前
IIS 后面挂 Kestrel,这 3 个配置错了就 502
kestrel·.net·iis配置
高频因子挖掘机1 小时前
量化选股到底要不要每天拉全市场股票?从全市场扫描到候选池的行情数据设计
后端·github·api
鑫 源1 小时前
C#源码开源, 获取macOS 电池数据,包括iOS (xamarin开发)
c#·.net·xamarin
专业程序开发源1 小时前
springboot校园志愿者管理系统28562-计算机课程设计、毕业设计
java·spring boot·后端·python·django·php·课程设计
谢亮_vipxieliang1 小时前
Go select 多路复用:从语法到实战的完整指南
开发语言·后端·golang
高频因子挖掘机1 小时前
复权价格怎么算?从除权因子、时间方向到量化回测避坑
后端·github·api