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

8 阅读2分钟

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


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

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

最常见场景:

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

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

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

1. 序列化(对象 → JSON)

using System.Text.Json;

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

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

结果:

{"Id":1,"UserName":"张三"}

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

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

三、最常用配置(必看)

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 个最常用 序列化特性(标签)

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

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. 序列化

string json = JsonConvert.SerializeObject(user);

3. 反序列化

var user = JsonConvert.DeserializeObject<UserDto>(json);

4. 特性

[JsonProperty("userId")] // 重命名
[JsonIgnore]             // 忽略
[JsonRequired]           // 必填

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

场景 1:缓存用户信息

// 存缓存:对象 → 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 控制器会自动序列化

[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 都靠它