.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 都靠它
相关推荐
Java患者·1 小时前
Spring Boot 3 整合 Elasticsearch 8
spring boot·后端·elasticsearch
雪隐1 小时前
个人电脑玩AI01-让5060 Ti给你打工——Whisper语音识别篇(上)
人工智能·后端
我是一颗柠檬1 小时前
【Redis】主从复制Day9
java·数据库·redis·后端
侯盛鑫1 小时前
理解 RocksDB IngestExternalFile
数据库·后端
1368木林森2 小时前
【Spring源码17·完结篇】SpringBoot核心注解+高频坑点+失效场景万字全集!收官Spring全家桶源码系列
java·spring boot·后端
武子康2 小时前
Java-15 深入浅出MyBatis 分页与通用 Mapper 实战:PageHelper + tk.mybatis 从配置到分页查询
java·后端
周杰伦fans2 小时前
AutoCAD .NET 二次开发:深入理解 ObjectId = 0 与 ObjectId.Null
数据库·oracle·.net
CodeSheep2 小时前
胡彦斌都开始苦修Vibe Coding,还上架App Store,都卷到编程来了吗?
前端·后端·程序员
DongWook2 小时前
关于Harness Engineering的一次实践
前端·后端