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