C#中JSON处理:对象解析与序列化

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

C# 中处理 JSON 简介



JSON(JavaScript 对象表示法)是一种轻量级数据交换格式,广泛应用于现代 Web 应用、API 和配置文件中。对于 C# 开发者而言,掌握 JSON 处理能力是一项基本技能,尤其是在构建 REST 客户端、微服务或与外部数据源交互的应用时。



在 .NET 生态系统中,主要有两种 JSON 处理方式:经典的 Newtonsoft.Json 库(又称 Json.NET)和 .NET Core 3.0 引入、自 .NET 5+ 起成为标准的内置库 System.Text.Json。这两个库都能让你执行两项关键操作:序列化(将 C# 对象转换为 JSON 字符串)和 反序列化(将 JSON 字符串还原为 C# 对象)。



本文将深入探讨这两种方式,学习如何解析复杂的数据结构,并回顾在 C# 中处理 JSON 的最佳实践。



1. 基本操作:序列化与反序列化



1.1 使用 Newtonsoft.Json (Json.NET)



多年来,Newtonsoft.Json 一直是 .NET 中处理 JSON 的事实标准。开始之前,请通过 NuGet 安装该包:



Install-Package Newtonsoft.Json


我们来看一个简单的示例类:



public class User{    public int Id { get; set; }    public string Name { get; set; }    public string Email { get; set; }    public bool IsActive { get; set; }}


将对象序列化为 JSON:



using Newtonsoft.Json;

User user = new User{ Id = 1, Name = "Ivan Petrov", Email = "ivan@example.com", IsActive = true};

string json = JsonConvert.SerializeObject(user, Formatting.Indented);Console.WriteLine(json);


执行结果:



{  "Id": 1,  "Name": "Ivan Petrov",  "Email": "ivan@example.com",  "IsActive": true}


将 JSON 反序列化为对象:



string jsonString = @"{""Id"":1,""Name"":""Ivan Petrov"",""Email"":""ivan@example.com"",""IsActive"":true}";User deserializedUser = JsonConvert.DeserializeObject<User>(jsonString);Console.WriteLine($"User: {deserializedUser.Name}, Email: {deserializedUser.Email}");


1.2 使用 System.Text.Json



自 .NET Core 3.0 起,微软引入了自己的 System.Text.Json 库,该库针对性能进行了优化,且无需外部依赖。



序列化:



using System.Text.Json;

User user = new User{ Id = 2, Name = "Maria Smirnova", Email = "maria@example.com", IsActive = false};

string json = JsonSerializer.Serialize(user, new JsonSerializerOptions { WriteIndented = true });Console.WriteLine(json);


反序列化:



string jsonString = @"{""Id"":2,""Name"":""Maria Smirnova"",""Email"":""maria@example.com"",""IsActive"":false}";User deserializedUser = JsonSerializer.Deserialize<User>(jsonString);Console.WriteLine($"User: {deserializedUser.Name}");


2. 处理复杂数据结构



2.1 嵌套对象与集合



JSON 常常包含嵌套结构。我们来看一个包含用户订单数组的示例:



public class Order{    public int OrderId { get; set; }    public decimal Amount { get; set; }    public List<string> Items { get; set; }}

public class Customer{ public int CustomerId { get; set; } public string FullName { get; set; } public List<Order> Orders { get; set; }}


反序列化复杂 JSON

博客

书籍推荐