我知道如何使用VBA将JSON解析为Excel,但是多层JSON却有问题。
示例:
{
"Level1": [{
"String1": "Data1",
"Level 2": [{
"String2": "Data2",
"String3": "Data3",
"Level3": [{
"String4": "Data4",
"String5": "Data5"
}]
}]
}]
}
如何获得一切?
答案 0 :(得分:1)
{
意味着一个字典,因此您可以通过键访问,[
意味着一个集合,因此您可以通过索引访问。 ""
表示字符串文字,因此您按原样阅读。测试数据类型和所需的句柄。下面,我使用JSON parser从单元格A1读取JSON字符串。将.bas
从该链接添加到您的项目后,您可以通过VBE>工具>引用> Microsoft脚本运行时添加引用。
我使用子EmptyDict
,递归地调用它来测试当前对象是字典还是集合,然后循环直到我清空每个字典。对于每个集合,我向右移一列。
如评论中所述,您将根据工作表中所需的输出格式进行调整。
您要下降的树结构如下:
VBA:
Option Explicit
Public r As Long, c As Long
Sub readValues()
Dim json As Object, item As Object
Set json = JsonConverter.ParseJson([A1])("Level1")(1) 'dictionary
r = 1: c = 1
EmptyDict json
End Sub
Public Sub EmptyDict(ByVal dict As Object)
Dim key As Variant, item As Object
Select Case TypeName(dict)
Case "Collection"
For Each item In dict
c = c + 1
r = 1
EmptyDict item
Next
Case "Dictionary"
For Each key In dict
If TypeName(dict(key)) = "Collection" Then
EmptyDict (dict(key))
Else
With ThisWorkbook.Worksheets("Sheet2")
.Cells(r, c) = dict(key)
End With
r = r + 1
End If
Next
End Select
End Sub