如何将JSON文件中的多维数组转换为Visual Basic可直接使用的数组?
实现步骤
1. 先修正JSON格式问题
你提供的JSON文件中AsVal键缺失双引号,首先要调整为标准JSON格式,避免解析失败:
[{"Name":"Diluc", "BaseATK":335, "BaseDef":784, "BaseHP":12981, "AsStat":"cd", "AsVal": 24.2 }, {"Name":"Amber", "BaseATK":223, "BaseDef":601, "BaseHP":9461, "AsStat":"atk%", "AsVal": 24 }, {"Name":"Barbara", "BaseATK":159, "BaseDef":669, "BaseHP":9787, "AsStat":"hp%", "AsVal": 24 }, {"Name":"Beidou", "BaseATK":225, "BaseDef":648, "BaseHP":13050, "AsStat":"electro%", "AsVal": 24 }]
2. 安装Newtonsoft.Json
在你的VB项目中打开NuGet包管理器,搜索Newtonsoft.Json安装即可,这是目前.NET生态最通用的JSON处理库。
3. 定义匹配的实体类
新建一个类和JSON结构一一对应:
Public Class Character Public Property Name As String Public Property BaseATK As Integer Public Property BaseDef As Integer Public Property BaseHP As Integer Public Property AsStat As String Public Property AsVal As Double End Class
4. 读取JSON并反序列化为数组/列表
使用如下代码完成解析:
Imports System.IO Imports Newtonsoft.Json ' 读取JSON文件内容 Dim jsonContent As String = File.ReadAllText("charactervalues.json") ' 反序列化为Character类型的列表 Dim characterList As List(Of Character) = JsonConvert.DeserializeObject(Of List(Of Character))(jsonContent) ' 可以按需转为数组 Dim characterArray As Character() = characterList.ToArray() ' 示例:遍历访问属性 For Each c In characterArray Console.WriteLine($"角色名:{c.Name},基础攻击力:{c.BaseATK}") Next
无需定义类的轻量方案
如果你不想额外定义实体类,也可以直接反序列化为JArray动态访问属性:
Imports Newtonsoft.Json.Linq Dim jsonContent As String = File.ReadAllText("charactervalues.json") Dim jArray As JArray = JArray.Parse(jsonContent) ' 访问第一个角色的属性 Dim dilucName As String = jArray(0)("Name").ToString() Dim dilucBaseATK As Integer = CInt(jArray(0)("BaseATK"))
内容的提问来源于stack exchange,提问作者Danny Lavelle
相关产品推荐
相关产品推荐

