在 C# 中解析 JSON 为匿名类型的 List:详细指南
解析 JSON 数据是现代应用程序开发中常见且重要的任务之一。在 C# 中,使用 Newtonsoft.Json 库可以方便地将 JSON 数据解析并映射到我们所需要的对象类型。本文将详细介绍如何将 JSON 数组解析到匿名类型的 List<T> 中。
准备工作
在开始之前,请确保你的开发环境已安装 .NET Core SDK 或 .NET Framework,并且已配置 Visual Studio 或 VS Code 等开发工具。
安装 Newtonsoft.Json 库
Newtonsoft.Json 是 C# 最流行的 JSON 处理库之一,我们可以使用它来处理 JSON 数据。在命令行中运行以下命令以在项目中添加该包:
dotnet add package Newtonsoft.Json
或者,通过 Visual Studio 的 NuGet 包管理器搜索 Newtonsoft.Json 并安装。
编写代码
接下来,我们将编写示例代码以演示如何解析 JSON 数据到匿名类型的 List<T> 中。
- 创建一个新的控制台应用程序:
dotnet new console -n JsonParseDemo
cd JsonParseDemo
- 打开 Program.cs 文件,并添加以下代码:
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(#34;id: {item.id}, as: {item.@as}, rb: {item.rb}, st: {item.st}, pct: {item.pct}, act: {item.act}");
}
}
}
代码详解
1. 定义 JSON 字符串
我们首先定义一个包含 JSON 数据的字符串,其中每个对象包含多个属性:
string json = @"[{""id"":0,""as"":"""",""rb"":""IT"",""st"":""完成"",""pct"":""2023-10-16"",""act"":""2023-10-16""}]";
2. 创建匿名类型数组作为模板
为了解析 JSON 字符串到匿名类型列表,我们定义一个匿名类型数组的模板:
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 字符串解析为匿名类型的实例:
var list = JsonConvert.DeserializeAnonymousType(json, anonymousTypeList);
4. 遍历解析后的列表,并打印每个项目的属性
最后,我们遍历解析后的列表,并打印每个项目的属性:
foreach (var item in list)
{
Console.WriteLine(#34;id: {item.id}, as: {item.@as}, rb: {item.rb}, st: {item.st}, pct: {item.pct}, act: {item.act}");
}
运行程序
保存完上述代码后,在命令行中运行以下命令以编译和执行程序:
总结
通过本文的示例,我们学习了如何使用 Newtonsoft.Json 库将 JSON 数据解析为匿名类型的 List<T>。这种方法特别适用于处理动态 JSON 数据模型,而无需创建大量的专门类型类。
希望本文对你理解 C# 中的 JSON 解析有所帮助,如果有任何问题或需要进一步的讲解,请随时留言讨论。