我知道在单元格Excel中显示我的解析Json时,Json是“简单”(当它只是字符串内),但现在我有字符串,对象和数组,我有点迷失..我的json如下:
[
{
"name": null,
"type": null,
"actions": [],
"screen": null,
"container": null,
"sysid": 5,
"uftitem": null
},
{
"name": null,
"type": null,
"actions": [],
"screen": null,
"container": null,
"sysid": 6,
"uftitem": null
},
{
"name": "UTProject5",
"type": "type",
"actions": [
{
"name": "UTProject",
"description": "UTProject",
"pattern": "UTProject",
"isCheck": true,
"sysid": 1,
"uftaction": {
"sysid_uftAction": 2,
"code": "code uft",
"maxTime": 10,
"nbCycle": 20
}
},
{
"name": "UTProject2",
"description": "UTProject",
"pattern": "UTProject",
"isCheck": true,
"sysid": 3,
"uftaction": {
"sysid_uftAction": 4,
"code": "code uft",
"maxTime": 10,
"nbCycle": 20
}
}
],
"screen": {
"name": null,
"type": null,
"actions": [],
"screen": null,
"container": null,
"sysid": 5,
"uftitem": null
},
"container": {
"name": null,
"type": null,
"actions": [],
"screen": null,
"container": null,
"sysid": 6,
"uftitem": null
},
"sysid": 7,
"uftitem": {
"code": "code",
"parentCode": "tooooz",
"sysid": 8
}
},
{
"name": "UTProject6",
"type": "type",
"actions": [
{
"name": "UTProject",
"description": "UTProject",
"pattern": "UTProject",
"isCheck": true,
"sysid": 1,
"uftaction": {
"sysid_uftAction": 2,
"code": "code uft",
"maxTime": 10,
"nbCycle": 20
}
},
{
"name": "UTProject2",
"description": "UTProject",
"pattern": "UTProject",
"isCheck": true,
"sysid": 3,
"uftaction": {
"sysid_uftAction": 4,
"code": "code uft",
"maxTime": 10,
"nbCycle": 20
}
}
],
"screen": {
"name": null,
"type": null,
"actions": [],
"screen": null,
"container": null,
"sysid": 5,
"uftitem": null
},
"container": {
"name": null,
"type": null,
"actions": [],
"screen": null,
"container": null,
"sysid": 6,
"uftitem": null
},
"sysid": 9,
"uftitem": {
"code": null,
"parentCode": null,
"sysid": 10
}
}
]
字符串
我想访问我想要的并显示在单元格中,但我不知道数组和对象中的访问。
谢谢大家!
4条答案
按热度按时间amrnrhlw1#
一般信息:
您可以使用下面的代码清空整个代码,该代码使用JSON converter:
备注:
我正在从工作表中阅读JSON字符串,并通过
JSONConverter
存储在对象中。初始对象是集合。我使用TypeName
函数 * 循环该集合和每个嵌套级别,以确定每个级别存储了哪些对象。然后,我使用Select Case
适当地处理这些对象。更有效的方法是设计一个可重用的类来处理这个问题。我在SO上看到了一些其他的问题,这是在哪里做的。
JSON示例
x1c 0d1x的数据
输出到立即窗口的示例代码:
通过将
Debug.Print
语句替换为工作表区域的赋值语句,可以选择写入单元格的方式。的
VBA:
字符串
tl;dr;教程点:
因此,以上可能已经有点充分,因为它得到了一切没有大量的解释。下面,我们将更详细地介绍如何通过相关的VBA来定位JSON和 “talk”。
为此,您可以使用在线JSON解析器来更清楚地查看
JSON
的结构。我把你的JSON
字符串放到Json Parser Online中,然后检查了String/parseJS eval
中的结构;左手部分。还有其他工具可用。首先要注意的是开头的
"["
。你可以在下面看到的第一个。的
这表示
Collection
对象,当使用JsonConverter
转换时,它是您的JSON
字串。所有其他内容都嵌套在"["
的左括号和最后的右括号之间。接下来要注意的是,这是一个字典的集合,所以在其中形成“组”的一切都是字典。
的
看到
"{"
表示字典的开始了吗?该词典的关键字为
"name","type","actions"
等。一个初步的观察是,许多这些信息是空的,即。
null
的数据。我们可以使用IsNull
测试忽略这些(我选择根据"name"
字段执行此操作):型
我们还可以看到,在
"name"
不是null
的字典中,"actions"
包含另一个字典集合。您可以看到,"["
后跟"{"
,如前所述。x1c4d 1x型
我们可以看到,每个内部字典都有
"name", "description"
等的关键字。我们还可以看到它们的值具有不同的数据类型。观察
JSON
结构中的"actions"
,您可以看到以下内容(使用示例字典):1.字符串x1m 25n1x
1.字符串
"description":"UTProject"
1.字符串“
pattern":"UTProject"
1.布尔型
"isCheck":true
1.双人间
"sysid":1
1.字典
"uftaction" 'keys of ==> "sysid_uftAction":2,"code":"code uft","maxTime":10,"nbCycle":20
因此,我们可以通过使用
TypeName
进行测试,使用Select Case
来处理数据类型对于基本的布尔型、字符串型和双精度型数据类型,我们可以简单地通过使用键(例如
型
这将是
True
或False.
、i
和j
的布尔结果,True
或False.
、i
和j
是外部和内部集合的循环中的当前位置的索引。对于字典
"uftaction"
,我们可以在其键上循环:型
当然,您也可以使用键的名称进行访问,而无需在键的末尾循环,例如:
型
在整个过程中,你可以通过索引而不是循环访问特定的位置,这样
i
和j
就可以直接用一个数值替换。和key, key2
等可以由任何给定的 key 的实际文字字符串替换。希望这能让你有更多的了解。
VBA:
型
x7yiwoj42#
我创建了这个简单的函数来格式化Json字符串,如果有人需要的话。代码非常简单。
字符串
这是结果,在我的情况下,我把它放在一个文本框,如果有人有一个建议,以改善,请告诉我。
型
8zzbczxx3#
看看下面的例子。将JSON.bas模块导入VBA工程进行JSON处理。
字符串
顺便说一句,类似的方法应用于in other answers。
ifsvaxew4#
我是这么做的:
字符串