编辑
2025-02-03
C# 应用
00
请注意,本文编写于 92 天前,最后修改于 92 天前,其中某些信息可能已经过时。

目录

准备工作
安装 Newtonsoft.Json 库
编写代码
代码详解
1. 定义 JSON 字符串
2. 创建匿名类型数组作为模板
3. 使用 JsonConvert.DeserializeAnonymousType 解析 JSON 字符串
4. 遍历解析后的列表,并打印每个项目的属性
运行程序
总结

解析 JSON 数据是现代应用程序开发中常见且重要的任务之一。在 C# 中,使用 Newtonsoft.Json 库可以方便地将 JSON 数据解析并映射到我们所需要的对象类型。本文将详细介绍如何将 JSON 数组解析到匿名类型的 List<T> 中。

准备工作

在开始之前,请确保你的开发环境已安装 .NET Core SDK 或 .NET Framework,并且已配置 Visual Studio 或 VS Code 等开发工具。

安装 Newtonsoft.Json 库

Newtonsoft.Json 是 C# 最流行的 JSON 处理库之一,我们可以使用它来处理 JSON 数据。在命令行中运行以下命令以在项目中添加该包:

C#
dotnet add package Newtonsoft.Json

或者,通过 Visual Studio 的 NuGet 包管理器搜索 Newtonsoft.Json 并安装。

编写代码

接下来,我们将编写示例代码以演示如何解析 JSON 数据到匿名类型的 List<T> 中。

  1. 创建一个新的控制台应用程序:
Markdown
dotnet new console -n JsonParseDemo cd JsonParseDemo
  1. 打开 Program.cs 文件,并添加以下代码:
C#
using Newtonsoft.Json; using System; using System.Collections.Generic; class Program { static void Main() { // 1. 定义 JSON 字符串 string json = @"[{""id"":0,""as"":"""",""rb"":""IT"",""st"":""完成"",""pct"":""2023-10-16"",""act"":""2023-10-16""}]"; // 2. 创建匿名类型数组作为模板 var anonymousTypeList = new[] { new { id = 0, @as = string.Empty, rb = string.Empty, st = string.Empty, pct = string.Empty, act = string.Empty } }; // 3. 使用 JsonConvert.DeserializeAnonymousType 解析 JSON 字符串 var list = JsonConvert.DeserializeAnonymousType(json, anonymousTypeList); // 4. 遍历解析后的列表,并打印每个项目的属性 foreach (var item in list) { Console.WriteLine($"id: {item.id}, as: {item.@as}, rb: {item.rb}, st: {item.st}, pct: {item.pct}, act: {item.act}"); } } }

代码详解

1. 定义 JSON 字符串

我们首先定义一个包含 JSON 数据的字符串,其中每个对象包含多个属性:

C#
string json = @"[{""id"":0,""as"":"""",""rb"":""IT"",""st"":""完成"",""pct"":""2023-10-16"",""act"":""2023-10-16""}]";

2. 创建匿名类型数组作为模板

为了解析 JSON 字符串到匿名类型列表,我们定义一个匿名类型数组的模板:

C#
var anonymousTypeList = new[] { new { id = 0, @as = string.Empty, rb = string.Empty, st = string.Empty, pct = string.Empty, act = string.Empty } };

匿名类型语法使用花括号 {} 来定义字段和类型。我们使用 string.Empty 作为字符串字段的默认值。

3. 使用 JsonConvert.DeserializeAnonymousType 解析 JSON 字符串

JsonConvert.DeserializeAnonymousType 方法可以将 JSON 字符串解析为匿名类型的实例:

C#
var list = JsonConvert.DeserializeAnonymousType(json, anonymousTypeList);

4. 遍历解析后的列表,并打印每个项目的属性

最后,我们遍历解析后的列表,并打印每个项目的属性:

C#
foreach (var item in list) { Console.WriteLine($"id: {item.id}, as: {item.@as}, rb: {item.rb}, st: {item.st}, pct: {item.pct}, act: {item.act}"); }

运行程序

保存完上述代码后,在命令行中运行以下命令以编译和执行程序:

image.png

总结

通过本文的示例,我们学习了如何使用 Newtonsoft.Json 库将 JSON 数据解析为匿名类型的 List<T>。这种方法特别适用于处理动态 JSON 数据模型,而无需创建大量的专门类型类。

希望本文对你理解 C# 中的 JSON 解析有所帮助,如果有任何问题或需要进一步的讲解,请随时留言讨论。

本文作者:rick

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!