如何使用JSON.Net将JSON对象数组解析为VB.NET对象列表?
解决VB.NET中用JSON.Net解析JSON数组到对象列表的问题
嘿,我来帮你搞定这个JSON解析的问题!你已经装了JSON.Net(Newtonsoft.Json),那剩下的步骤其实很简单,咱们一步步来:
第一步:补全你的ServerLocation类
首先要确保你的ServerLocation类的属性和JSON里的字段对应上,这样JSON.Net才能正确映射。你可以直接用和JSON键同名的属性,也可以用JsonProperty特性给属性起更规范的VB命名:
Imports Newtonsoft.Json Public Class ServerLocation ' 方式1:属性名和JSON键完全一致,无需额外配置 Public Property servername As String Public Property ovpnlocation As String ' 方式2:用更符合VB命名规范的属性名,通过JsonProperty映射到JSON键 ' <JsonProperty("servername")> ' Public Property ServerName As String ' <JsonProperty("ovpnlocation")> ' Public Property OVPNLocation As String End Class
第二步:解析JSON数组到List(Of ServerLocation)
假设你已经有了JSON字符串(不管是直接定义的,还是从文件/网络获取的),直接用JsonConvert.DeserializeObject方法就能完成解析:
示例1:解析直接定义的JSON字符串
' 你的JSON数组字符串(注意VB里双引号要转义成两个双引号) Dim jsonString As String = "[ { ""servername"": ""US - New Jersey"", ""ovpnlocation"": ""servers/newjersey.ovpn"" }, { ""servername"": ""The Netherlands"", ""ovpnlocation"": ""servers/nl.ovpn"" }, { ""servername"": ""Belgium"", ""ovpnlocation"": ""servers/belgium.ovpn"" } ]" ' 解析成目标列表 Dim ServerList As New List(Of ServerLocation) ServerList = JsonConvert.DeserializeObject(Of List(Of ServerLocation))(jsonString)
示例2:解析从文件读取的JSON
如果你的JSON存在本地文件里,可以先读取文件内容再解析:
' 读取文件中的JSON内容 Dim jsonFilePath As String = "C:\your\file\path\servers.json" Dim jsonContent As String = System.IO.File.ReadAllText(jsonFilePath) ' 解析成列表 Dim ServerList As List(Of ServerLocation) = JsonConvert.DeserializeObject(Of List(Of ServerLocation))(jsonContent)
注意事项
- 一定要在代码顶部添加
Imports Newtonsoft.Json,否则会找不到JsonConvert和JsonProperty这些对象/特性。 - 如果JSON格式有问题(比如语法错误),解析时会抛出异常,建议可以用
Try-Catch块来处理可能的错误:
Try ServerList = JsonConvert.DeserializeObject(Of List(Of ServerLocation))(jsonString) Catch ex As Exception ' 处理解析错误,比如输出错误信息 Console.WriteLine($"解析失败:{ex.Message}") End Try
内容的提问来源于stack exchange,提问作者Niel
相关产品推荐
相关产品推荐

