VB.NET中如何解析JSON对象数组并访问各对象属性
解决VB.NET中JSON数组的反序列化问题
嗨,我懂你的问题了——现在接口返回的是JSON数组(包裹在[]里的多个交易对象),但你之前的代码是按照单个Transaction对象来反序列化的,所以才没法通过transactionResponse.amount访问属性,毕竟现在的返回结果是一个集合而不是单个对象。咱们调整一下代码就能解决:
修改步骤
- 把反序列化的目标类型从单个
Transaction改成交易对象的集合(比如List(Of Transaction)或者Transaction()数组都可以) - 遍历这个集合,就能逐个访问每个交易的
amount、status等属性了
修改后的完整代码
Try System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls Or SecurityProtocolType.Tls11 Or SecurityProtocolType.Tls12 Dim Request As WebRequest = WebRequest.Create(url) Request.Credentials = CredentialCache.DefaultCredentials Using responseStream = Request.GetResponse().GetResponseStream() Using reader As New StreamReader(responseStream) Dim objResponse As String = reader.ReadToEnd() ' 反序列化为交易对象列表,也可以用Transaction()数组替代List(Of Transaction) Dim transactionList = JsonConvert.DeserializeObject(Of List(Of Transaction))(objResponse) ' 遍历每个交易,访问属性 For Each transaction In transactionList ' 示例:输出每个交易的状态和金额 Console.WriteLine($"交易状态:{transaction.status},金额:{transaction.amount}") ' 这里可以根据业务需求处理单个transaction的amount等属性 Next End Using End Using Catch ex As WebException ' 建议添加异常处理逻辑,比如打印错误信息 Console.WriteLine($"请求异常:{ex.Message}") End Try Private Class Transaction ' object是VB.NET关键字,加方括号转义避免语法警告,也可以重命名为ObjectType等 Public Property [object] As String Public Property status As String Public Property amount As Integer End Class
关键说明
- 反序列化类型调整:原来的
JsonConvert.DeserializeObject(Of Transaction)只能解析单个对象的JSON,改成List(Of Transaction)后就能适配数组格式的返回结果了 - 关键字转义:
object是VB.NET的保留关键字,直接作为属性名会有语法警告,用[object]转义或者重命名属性都能解决 - 集合遍历:通过
For Each循环遍历transactionList,就能逐个操作每个交易对象的属性啦
内容的提问来源于stack exchange,提问作者Developer1903
相关产品推荐
相关产品推荐

