如何在VB.NET中解析jQuery DataTable返回的JSON结果?
VB.NET 反序列化 jQuery DataTable 格式 JSON 为对象集合
针对你获取的jQuery DataTable格式JSON,以下几种方法可以实现反序列化并转换为集合/对象列表:
方法1:定义匹配的类模型(推荐)
通过定义与JSON结构对应的类,使用Json.NET(Newtonsoft.Json)库完成强类型反序列化,这是最稳定的方式。
步骤1:定义响应类
Public Class DataTableResponse Public Property draw As Integer Public Property recordsTotal As Integer Public Property recordsFiltered As Integer Public Property data As List(Of String()) ' 用String()数组对应每条无键名的记录 End Class
步骤2:反序列化并处理数据
Imports Newtonsoft.Json ' 假设jsonString是你从HttpClient获取的JSON字符串 Dim tableResponse = JsonConvert.DeserializeObject(Of DataTableResponse)(jsonString) ' 遍历每条记录 For Each recordArray In tableResponse.data ' 通过索引访问每个字段值,例如recordArray(0)对应第一条数据的第一个值 Dim firstField = recordArray(0) Dim secondField = recordArray(1) ' ...根据业务需求处理字段 Next
方法2:使用动态类型快速处理
如果不想提前定义类,可以用动态类型直接解析JSON:
Imports Newtonsoft.Json Dim dynamicResult = JsonConvert.DeserializeObject(Of Object)(jsonString) Dim dataRecords = dynamicResult.data For Each record In dataRecords ' 直接通过索引获取字段值 Dim fieldValue = record(3) ' 示例:获取第四个字段 ' ...处理逻辑 Next
方法3:映射为自定义实体类
如果需要将无键名的数组转换为带属性名的实体对象,可以在反序列化后手动映射:
步骤1:定义自定义实体类
Public Class BusinessRecord Public Property ID As String Public Property Name As String Public Property Category As String ' ...根据实际业务定义对应属性(共8个) End Class
步骤2:完成映射
Imports Newtonsoft.Json Imports System.Linq Dim tableResponse = JsonConvert.DeserializeObject(Of DataTableResponse)(jsonString) Dim businessRecords = tableResponse.data.Select(Function(arr) New BusinessRecord() With { .ID = arr(0), .Name = arr(1), .Category = arr(2), ' ...依次为每个属性赋值对应索引的数组元素 }).ToList()
异常处理提示
如果反序列化时出现异常,可以通过配置序列化选项忽略非关键错误:
Dim serializerSettings = New JsonSerializerSettings() With { .MissingMemberHandling = MissingMemberHandling.Ignore, ' 忽略JSON中不存在的类属性 .Error = Sub(sender, args) args.ErrorContext.Handled = True ' 捕获并处理序列化错误 } Dim tableResponse = JsonConvert.DeserializeObject(Of DataTableResponse)(jsonString, serializerSettings)
内容的提问来源于stack exchange,提问作者user18107302
相关产品推荐
相关产品推荐

