You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VB.NET如何将JSON数据转为可用格式,是否需要新建对应数据类?

处理方案

方案1:强类型类转换(最优方案,推荐使用)

你的JSON顶层是动态数字字符串作为键,每个键对应的值结构完全一致,使用强类型类转换是最优选择:编译阶段可做属性校验、编码时有智能提示、后续数据操作效率更高,完全不需要手动遍历JSON节点。

步骤1:新建对应的数据实体类

Public Class TenantInfo
    <JsonProperty("name")>
    Public Property Name As String
    <JsonProperty("tenantcode")>
    Public Property TenantCode As String
    <JsonProperty("package_id")>
    Public Property PackageId As Integer
    <JsonProperty("package")>
    Public Property Package As String
    <JsonProperty("ext_length")>
    Public Property ExtLength As Integer
    <JsonProperty("country_id")>
    Public Property CountryId As Integer
    <JsonProperty("country_code")>
    Public Property CountryCode As Integer
End Class

步骤2:修改业务逻辑代码,直接反序列化

Imports System.Net
Imports Newtonsoft.Json

Public Class Form1
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Using client As New WebClient()
            Dim json As String = client.DownloadString("https://myapi")
            ' 直接反序列化为字典,键为JSON顶层的动态数字字符串,值为对应实体对象
            Dim result As Dictionary(Of String, TenantInfo) = JsonConvert.DeserializeObject(Of Dictionary(Of String, TenantInfo))(json)
            
            ' 遍历使用示例
            For Each kvp In result
                Dim dynamicKey As String = kvp.Key ' 对应"4"、"5"、"8"等动态键
                Dim info As TenantInfo = kvp.Value
                ' 直接调用属性即可,支持智能提示
                Console.WriteLine($"键:{dynamicKey},名称:{info.Name},租户编码:{info.TenantCode}")
            Next

            ' 单独取指定键值示例
            If result.ContainsKey("4") Then
                Dim warehouseInfo = result("4")
                ' 直接操作对应属性即可
            End If
        End Using
    End Sub
End Class

方案2:无实体类直接操作JObject(仅适合临时少量操作场景)

如果只是临时用一次不想建类,可以直接遍历JObject的属性取值,不需要额外处理Children节点:

Imports System.Net
Imports Newtonsoft.Json.Linq

Public Class Form1
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Using client As New WebClient()
            Dim json As String = client.DownloadString("https://myapi")
            Dim ser As JObject = JObject.Parse(json)

            For Each item As JProperty In ser.Properties()
                Dim dynamicKey = item.Name ' 对应顶层动态键
                Dim name = item.Value("name").ToString()
                Dim tenantCode = item.Value("tenantcode").ToString()
                Dim packageId = item.Value("package_id").ToObject(Of Integer)()
                ' 其他属性同理取值即可
                Console.WriteLine($"键:{dynamicKey},名称:{name},租户编码:{tenantCode}")
            Next
        End Using
    End Sub
End Class

内容的提问来源于stack exchange,提问作者Stuart B

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 03:45:03