C# 中解析 JSON

2024 年 8 月 29 日 | 4 分钟阅读

引言

在 C# 中解析 JSON 是开发人员构建使用 JSON 数据的应用程序的常见任务。JSON 代表 JavaScript 对象表示法,是一种轻量级数据表示更改格式,对普通用户来说易于阅读和写入,对机器来说易于解析和生成。在本文中,我们将了解如何使用内置的 .NET JSON 解析库在 C# 中解析 JSON。

C# 中的 JSON 解析可以通过不同的方式实现:使用 Newtonsoft.Json 库或使用 .NET Core 3.0 中引入的 System.Text.Json 库。这两个库都是 C# 中 JSON 解析的流行选择,并提供类似的功能。

方法 1:使用 Newtonsoft.Json 包

在 C# 中解析 JSON 最受欢迎的包之一是 Newtonsoft.Json。它是一个第三方包,提供了一种简单灵活的方式来序列化和反序列化 JSON 数据。

要在 C# 项目中使用 Newtonsoft.Json,您需要先安装它。您可以通过 Visual Studio 中的 NuGet 包管理器安装它,或在包管理器控制台中运行以下命令

代码

安装后,您就可以在代码中开始使用它了。以下是使用 Newtonsoft.Json 解析 JSON 的示例:

C# 代码

在此示例中,我们定义了一个 JSON 字符串,并使用 Newtonsoft.Json 提供的 JsonConvert.DeserializeObject 方法对其进行反序列化。该方法返回一个动态对象,允许我们使用属性语法访问 JSON 数据。

方法 2:使用 System.Text.Json 命名空间

.NET Core 3.0.NET 5.0 开始,C# 还提供了一个内置的 JSON 解析库,名为 System.Text.Json。它是一个轻量级且快速的 JSON 序列化器和反序列化器,包含在 .NET 运行时中。

以下是使用 System.Text.Json 解析 JSON 的示例:

C# 代码

在此示例中,我们使用 System.Text.Json 提供的 JsonDocument.Parse 方法解析 JSON 字符串。该方法返回一个 JsonDocument 对象,表示已解析的 JSON 数据。然后,我们可以使用 JsonElement 类及其 GetProperty 方法访问 JSON 数据。

方法 3:使用 JavaScriptSerializer 类

另一种在 C# 中解析 JSON 的方法是使用 JavaScriptSerializer 类,该类是 System.Web.Extensions 程序集的一部分。这个类是在 .NET Framework 3.5 中引入的,提供了一种简单的方法来将 JSON 数据反序列化为强类型对象。

要使用 JavaScriptSerializer 类,您需要创建一个表示要反序列化的 JSON 对象的类。该类应具有与 JSON 对象的属性名称和数据类型匹配的属性。例如,假设您有以下 JSON 对象

JSON 对象

您可以创建一个表示此对象的类,如下所示

C# 代码

定义类后,您可以使用 JavaScriptSerializer 类将 JSON 数据反序列化为 Person 类的实例

C# 代码

在上面的示例中,我们首先定义了一个包含 JSON 数据的字符串。然后,我们创建了 JavaScriptSerializer 类的一个实例,并使用其 Deserialize 方法将 JSON 数据解析为 Person 类的一个实例。

值得注意的是,与其他两种方法相比,JavaScriptSerializer 类有其局限性。例如,它不支持 JSON 的一些更高级功能,例如处理空值或在 camelCase 和 PascalCase 命名约定之间进行转换。它也不支持反序列化 JSON 数组的内置功能。

结论

在本文中,我们探讨了在 C# 中解析 JSON 的两种方法:使用 Newtonsoft.Json 库和使用 System.Text.Json 库。这两个库都提供强大的 JSON 解析功能,并被构建使用 JSON 数据的 C# 应用程序的开发人员广泛使用。


下一个主题优先级队列 C#