C# (.NET) 中的 JSON 处理:完整指南与示例

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

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

开始课程

JSON 处理在 C# (.NET) 中:完整指南与示例



JSON (JavaScript Object Notation) 是现代 Web 应用程序、API 和配置文件中数据交换最流行的格式之一。在 .NET 生态系统中,开发人员可以使用强大的工具来处理 JSON,这些工具可以轻松地将对象序列化为 JSON 并反序列化回来。在本文中,我们将详细介绍两种主要方法:内置库 System.Text.Json(推荐用于 .NET Core 3.0+ 和 .NET 5+)和流行的第三方库 Newtonsoft.Json(也称为 Json.NET)。



1. System.Text.Json — 现代 .NET 标准



从 .NET Core 3.0 开始,Microsoft 推出了自己的高性能 JSON 处理库 — System.Text.Json。它针对最小内存消耗和高速度进行了优化,使其成为新项目的理想选择。



1.1. 安装与导入



该库已内置于 .NET 5/6/7/8/9 中,因此无需额外安装。要使用它,只需引入命名空间:



using System.Text.Json;using System.Text.Json.Serialization;


1.2. 基本序列化与反序列化



让我们看一个简单的例子:将对象序列化为 JSON 并反序列化回来。



// 定义类public class Person{    public string Name { get; set; }    public int Age { get; set; }    public bool IsEmployed { get; set; }}

// 序列化var person = new Person { Name = "伊万", Age = 30, IsEmployed = true };string json = JsonSerializer.Serialize(person);Console.WriteLine(json); // {"Name":"伊万","Age":30,"IsEmployed":true}

// 反序列化var deserializedPerson = JsonSerializer.Deserialize<Person>(json);Console.WriteLine(deserializedPerson.Name); // 伊万


1.3. 使用属性



System.Text.Json 支持用于微调序列化的属性:



public class Product{    [JsonPropertyName("product_id")]    public int Id { get; set; }        [JsonIgnore]    public string InternalCode { get; set; }        [JsonConverter(typeof(JsonStringEnumConverter))]    public ProductCategory Category { get; set; }}

public enum ProductCategory{ Electronics, Clothing, Food}

var product = new Product { Id = 101, InternalCode = "SECRET", Category = ProductCategory.Electronics };

string json = JsonSerializer.Serialize(product);// {"product_id":101,"Category":"Electronics"}// InternalCode 由于 [JsonIgnore] 而未包含在 JSON 中


1.4. 序列化选项



您可以通过 JsonSerializerOptions 配置序列化器的行为:



var options = new JsonSerializerOptions{    WriteIndented = true,           // 带缩进的漂亮输出    PropertyNamingPolicy = JsonNamingPolicy.CamelCase, // 属性的 camelCase    DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull // 忽略 null};

string prettyJson = JsonSerializer.Serialize(person, options);Console.WriteLine(prettyJson);/* 输出:{ "name": "伊万", "age": 30, "isEmployed": true}*/


2. Newtonsoft.Json (Json.NET) — 久经考验的工具



在 System.Text.Json 出现之前,Newtonsoft.Json 是 .NET 中处理 JSON 的事实标准。它提供更灵活的配置和广泛的功能集,尽管在性能上有所不足。



2.1. 安装



要使用 Newtonsoft.Json,需要安装 NuGet 包:



// 通过 Package Manager Console:Install-Package Newtonsoft.Json

// 或通过 .NET CLI:dotnet add package Newtonsoft.Json


2.2. 基本操作



using Newtonsoft.Json;

public class Or

推荐