【问题标题】:How to get data from a JSON and display in grid via vb6如何从 JSON 中获取数据并通过 vb6 在网格中显示
【发布时间】: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 没有。

标签: json rest grid vb6


【解决方案1】:

像这样的东西会起作用吗?为了清楚起见,长线被打破。请注意,标头是在循环之前单独和手动添加的。第二件事要注意的是,您将循环变量IJson("data")("messages")(I) 一起使用,而不是执行Json("data")("messages")(1)。你用.Count 得到消息的数量,然后循环它们。这可以防止它们被重复。

您可能需要也可能不需要 MSHFlexGrid1.Rows = MSHFlexGrid1.Rows + 1 之类的东西,这取决于您的网格类型,如果它只显示一行。不确定那个特定的网格控件。

Set Json = JsonConverter.ParseJson(strResp)
Dim Header as String
Header = "Number" & vbTab & "Message" & vbTab & "Sender"
MSHFlexGrid1.AddItem Header

For I = 1 to Json("data")("messages").Count
  Dim Line as String
  Line = ""
  Line = Json("data")("messages")(I)("number")
  Line = Line & vbTab 
  Line = Line & Json("data")("messages")(I)("message")
  Line = Line & vbTab 
  Line = Line & Json("data")("messages")(I)("sender")

  MSHFlexGrid1.AddItem Line
Next

【讨论】:

    猜你喜欢
    • 2019-04-02
    • 2018-12-15
    • 2019-08-19
    • 2021-03-12
    • 2019-04-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多