VB.NET 中将 JSON 数据转换为 List 对象的实用指南
在 .NET 开发中,尤其是在使用 VB.NET 语言时,处理 JSON 数据是一项非常常见的任务,JSON(JavaScript Object Notation)因其轻量级和易于阅读的特性,成为了 Web 服务和应用程序间数据交换的主流格式,将 JSON 字符串转换为程序中的 List 集合,能够让我们更方便地操作和处理这些数据,本文将详细介绍在 VB.NET 中如何将 JSON 转换为 List 对象,主要依赖强大的 Newtonsoft.Json(也称为 Json.NET)库。
准备工作:安装 Newtonsoft.Json 库
在开始之前,确保你的项目已经安装了 Newtonsoft.Json 库,这是目前 .NET 生态中最流行、功能最全面的 JSON 处理库。
你可以通过以下两种方式安装:
-
NuGet 包管理器控制台: 在 Visual Studio 中,通过 “工具” -> “NuGet 包管理器” -> “程序包管理器控制台”,然后输入以下命令并回车:
Install-Package Newtonsoft.Json
-
.NET CLI (适用于 .NET Core/.NET 5+): 在项目目录下打开命令行,运行:
dotnet add package Newtonsoft.Json
安装完成后,你就可以在项目中引入 Newtonsoft.Json 命名空间了。
定义与 JSON 结构匹配的 VB.NET 类/结构
要将 JSON 反序列化为 List 对象,首先需要定义一个 VB.NET 的类(Class)或结构(Structure),该类/结构的属性必须与 JSON 对象的键名一一对应,JSON 是一个对象数组,List 的泛型参数就是这个类/结构类型。
假设我们有以下 JSON 字符串,它表示一个人员列表:
[
{
"id": 1,
"name": "张三",
"age": 30,
"email": "zhangsan@example.com"
},
{
"id": 2,
"name": "李四",
"age": 25,
"email": "lisi@example.com"
},
{
"id": 3,
"name": "王五",
"age": 28,
"email": "wangwu@example.com"
}
]
我们需要定义一个 Person 类来匹配这个结构:
' 引入 Newtonsoft.Json 命名空间
Imports Newtonsoft.Json
Public Class Person
Public Property Id As Integer
Public Property Name As String
Public Property Age As Integer
Public Property Email As String
End Class
重要提示:
- JSON 中的键名(如 "id", "name")需要与 VB.NET 类中的属性名(如
Id,Name)完全匹配,或者通过[JsonProperty("json键名")]特性进行映射。 - 属性的数据类型也需要与 JSON 中对应值的类型兼容。
使用 JsonConvert.DeserializeObject 进行转换
一切准备就绪后,我们就可以使用 JsonConvert.DeserializeObject<T>() 方法来完成转换了。T 就是我们要转换成的目标类型,在这里就是 List(Of Person)。
以下是一个完整的示例代码:
Imports Newtonsoft.Json
' 定义 Person 类
Public Class Person
Public Property Id As Integer
Public Property Name As String
Public Property Age As Integer
Public Property Email As String
End Class
Module Module1
Sub Main()
' 1. 定义 JSON 字符串
Dim jsonString As String = "[{""id"":1,""name"":""张三"",""age"":30,""email"":""zhangsan@example.com""},{""id"":2,""name"":""李四"",""age"":25,""email"":""lisi@example.com""},{""id"":3,""name"":""王五"",""age"":28,""email"":""wangwu@example.com""}]"
Try
' 2. 使用 JsonConvert.DeserializeObject 将 JSON 字符串转换为 List(Of Person)
Dim personList As List(Of Person) = JsonConvert.DeserializeObject(Of List(Of Person))(jsonString)
' 3. 验证并使用转换后的 List
If personList IsNot Nothing Then
Console.WriteLine("成功将 JSON 转换为 List,共 {0} 条记录。", personList.Count)
For Each person In personList
Console.WriteLine($"ID: {person.Id}, 姓名: {person.Name}, 年龄: {person.Age}, 邮箱: {person.Email}")
Next
Else
Console.WriteLine("转换结果为空。")
End If
Catch ex As Exception
Console.WriteLine("转换过程中发生错误: " & ex.Message)
End Try
Console.ReadKey()
End Sub
End Module
代码解析:
- 我们定义了一个与 JSON 结构匹配的
Person类。 jsonString变量存储了我们要转换的 JSON 数据。JsonConvert.DeserializeObject(Of List(Of Person))(jsonString)是核心代码,它告诉 Json.NET 将jsonString反序列化为一个Person对象的列表。- 转换成功后,
personList就是一个普通的 VB.NETList集合,你可以像操作其他任何 List 一样对其进行遍历、查询、修改等操作。 - 使用
Try...Catch块来捕获可能发生的异常,JSON 格式不正确、类型不匹配等。
处理复杂 JSON 结构
对于更复杂的 JSON 结构,例如嵌套对象或数组,只需在 VB.NET 类中相应地定义嵌套类或属性类型即可。
以下包含嵌套地址的 JSON:
[
{
"id": 1,
"name": "张三",
"address": {
"city": "北京",
"street": "长安街"
}
}
]
对应的 VB.NET 类应定义为:
Public Class Address
Public Property City As String
Public Property Street As String
End Class
Public Class PersonWithAddress
Public Property Id As Integer
Public Property Name As String
Public Property Address As Address ' 嵌套对象
End Class
然后使用 JsonConvert.DeserializeObject(Of List(Of PersonWithAddress))(jsonString) 进行转换。
在 VB.NET 中将 JSON 转换为 List 对象,主要依赖于 Newtonsoft.Json 库的强大功能,整个过程可以概括为以下几个关键步骤:
- 安装库:通过 NuGet 安装
Newtonsoft.Json。 - 定义模型:创建与 JSON 结构匹配的 VB.NET 类/结构。
- 调用方法:使用
JsonConvert.DeserializeObject(Of List(Of YourClass))(jsonString)执行转换。 - 使用数据:对转换得到的 List 进行后续操作。
这一技能,将使你在处理来自 API、配置文件或其他数据源的 JSON 数据时变得更加得心应手,希望本文能为你提供清晰的指导!



还没有评论,来说两句吧...