json - 如何在 VBA 中解析嵌套的 JSON
问题描述
我有一个站点,我需要连接到其中获取 JSON 文件,然后解析出我需要的信息。但是由于数据是嵌套的,我遇到了一些困难……有人可以帮忙吗?我正在使用 VBAJSON 库来尝试解析这个..
JSON 文件如下所示:
{
record: [
{
Name: "Bob",
Created: "2020/06/18"
},
{
Age: "52",
TableName: "AGE"
},
{
School: "Woodside",
TableName: "School"
}
{
Phone: "Iphone",
TableName: "Phone"
},
]
}
'这是开始获取数据并解析它的尝试,但我迷路了......
Sub getjson2()
Dim hReq As New WinHttpRequest
Dim strURL As String, JSON As Dictionary
strURL = "testsite.com/abcd"
hReq.Open "GET", strURL, False
hReq.Send
Dim response As String
response = hReq.ResponseText
Set JSON = JsonConverter.ParseJson(response)
End Sub
解决方案
首先,您发布的 Json 无效。更具体地说,它在数组的第三个元素之后缺少一个逗号,在数组的第四个元素之后不应该有一个逗号,并且它还缺少所有键的引号。它应该是这样的:
{
"record": [
{
"Name": "Bob",
"Created": "2020/06/18"
},
{
"Age": "52",
"TableName": "AGE"
},
{
"School": "Woodside",
"TableName": "School"
},
{
"Phone": "Iphone",
"TableName": "Phone"
}
]
}
除此之外,我看到您正在使用VBA-JSON
解析器,所以我假设您已经添加了对该Microsoft Scripting Runtime
库的引用。
说了这么多,解析 json 是相当容易的。以下是获取School
键值的方法,例如:
Debug.Print JSON("record")(3)("School")
这将打印Woodside
在您的即时窗口中。您可以通过相应地调整代码来获取其余值。
笔记:
我总是推荐使用标准的 JSON 格式。但是,如果这超出了您的控制范围,因为您收到的响应是这样格式化的,那么有一种方法可以避免缺少引号:
JsonConverter.JsonOptions.AllowUnquotedKeys = True
推荐阅读
- reactjs - 类型'{重新获取:任何;使用 Formik 和 React 缺少 }'
- css - 后代组合子 CSS 定义的顺序
- django-rest-framework - django2中带有router.urls的命名空间
- android - 到期时间未收到 Google Play 实时通知 SUBSCRIPTION_EXPIRED
- python - 如果直接运行 Python 模块会生成日志,但在由 `pytest` 运行时不会生成日志
- vue.js - 如何在 asyncData nuxtjs 中获取上下文和环境变量
- c - printf 的格式化
- anaconda - Jupyter 没有输出
- php - PHP中的FPDF换行符
- elasticsearch - 如何从弹性搜索中获取最近 30 分钟的记录