【发布时间】:2022-07-21 22:22:59
【问题描述】:
我需要从 JSON-Object 获取数据并将一些数据显示到 MSHFlexGrid 中。我正在使用(VBA-JSON v2.3.1 JsonConverter)。 VBA-Json in Github
这是json:
{
\"status\": \"OK\",
\"code\": \"OK\",
\"message\": \"Ok\",
\"data\": {
\"messages\": [
{
\"number\": \"+9710001529\",
\"message\": \"Hello World\",
\"sender\": \"+97911308600\",
\"time\": \"2022-07-12T20:12:14Z\",
\"type\": \"normal\"
},
{
\"number\": \"+9710001529\",
\"message\": \"Just For Test\",
\"sender\": \"+979051931024\",
\"time\": \"2022-06-28T23:15:22Z\",
\"type\": \"normal\"
},
{
\"number\": \"+9710001529\",
\"message\": \"Test\",
\"sender\": \"+979565547989\",
\"time\": \"2022-01-28T16:04:50Z\",
\"type\": \"mobilepanel\"
},
{
\"number\": \"+9710001529\",
\"message\": \"Comment\",
\"sender\": \"+979102900089\",
\"time\": \"2018-06-16T22:23:23Z\",
\"type\": \"normal\"
}
]
},
\"meta\": {
\"total\": 37,
\"pages\": 4,
\"limit\": 10,
\"page\": 0,
\"prev\": null,
\"next\": \"http://0.0.0.0:80/v1/inbox?limit=10\\u0026page=1\"
}
}
这是我的代码:
Set Json = JsonConverter.ParseJson(strResp)
MSHFlexGrid1.AddItem Json(\"data\")(\"messages\")(1)(\"number\") & vbTab & Json(\"data\")(\"messages\")
(1)(\"message\") & vbTab & Json(\"data\")(\"messages\")(1)(\"sender\")
问题是只有表格的第一行填充了json的数据,而且每一列都没有标题。如何读取 json 并将它们显示为 MSHFlexGrid 中的行和列以及每列的名称? 非常感谢
-
这个问题是否可以与 JSON 解析分开,只是将多行连同标题一起加载到
MSHFlexGrid中?至于标题,您可能只需要手动添加标题作为第一行。此外,这里的 MSHFlexGrid 已经有一段时间了,但是您是否需要执行类似MSHFlexGrid1.Rows = MSHFlexGrid1.Rows + 1的操作来增加行数? -
@user51 谢谢。网格的类型并不重要。可以使用弹性网格。使用此代码,\"MSHFlexGrid1.Rows = MSHFlexGrid1.Rows + 1\" 仅重复第一行的数据。如果我希望所有 Json 的数据都显示在网格中的行和列中。
-
哦,如果第一项是重复然后简单地做类似
For I = 1 to Json(\"data\")(\"messages\").Count: grd.AddItem Json(\"data\")(\"messages\")(I)(\"number\") ...: Next这样的事情,你遍历集合。 -
@User51 所说的:
.AddItem方法添加一行到网格,所以你需要 a) 首先自己添加带有列标题的标题行(提示:查看.FixedRows属性)b) 然后您需要循环遍历 JSON,如 @User51 所示。 -
@User51,似乎使用您的代码不起作用,只会重复网格中的数据。此外,每一列都没有标题。 \"grid1.col and grid1.row\"应该是用的,但是不知道怎么用,把Json的数据转换成MSHFlexGrid1的行列。 .net 有很多代码,但 vb6 没有。