.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 都靠它
相关推荐
凌虚3 小时前
面向 MySQL 用户的 PostgreSQL 快速上手指南
数据库·后端·架构
IT_陈寒4 小时前
Vite静态资源引用这个坑我踩得有点疼
前端·人工智能·后端
前端开发张小七4 小时前
Java 学习笔记 · 第一课:基础语法与核心概念
java·后端
海盗12344 小时前
微软技术周报 ——2026-08-03
后端·python·microsoft·c#·.netcore
沙湖遇雨5 小时前
6. Pipeline 的生命周期
后端
青青子衿悠悠我心5 小时前
TRAE Work让财务月底对账3小时变5分钟
后端
创安电气研究所5 小时前
用TypeScript给Modbus设备做一层适配器
后端
妙码生花5 小时前
从 PHP 到 AI + Golang,程序员自救转型手记(五十):增加管理员角色组管理
前端·后端·ai编程
妙码生花5 小时前
从 PHP 到 AI + Golang,程序员自救转型手记(五十一):管理员和角色组的关联
前端·后端·ai编程
Zane19946 小时前
@property 到底是怎么把方法伪装成属性的?一文吃透 property、staticmethod、classmethod
后端·python