.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 都靠它
相关推荐
大鸡腿同学9 小时前
从 CoT 思维链到 ReAct:智能 Agent 到底是怎么 “思考” 的?
后端
IT_陈寒11 小时前
Vite的静态资源打包让我熬夜到三点,这坑千万别跳
前端·人工智能·后端
SamDeepThinking12 小时前
高并发场景下,CompletableFuture与ForkJoinPool该如何取舍?
java·后端·面试
Asize13 小时前
多模态生图:从 Vite 工程化到前端调用 Qwen Image
javascript·人工智能·后端
java小白小13 小时前
SpringBoot(09):缓存实战——穿透、雪崩、击穿的解决方案
后端
java小白小13 小时前
SpringBoot(08):Redis 集成——5 分钟给你的项目加上缓存
后端
LiuMingXin13 小时前
意图与代码之间:AI编程范式全景解读
前端·后端·面试
用户342323237631713 小时前
边缘计算与云边协同——当采集不再只是“上传“
后端
壹方秘境14 小时前
ApiCatcher支持抓包HTTP传输大文件的实现原理分享
前端·后端·客户端
神奇小汤圆14 小时前
2026最新·最全·最实用|Java岗面试真题(已收录GitHub)
后端