json - 如何获取 ("fields")在 VBA-JSON 中工作

标签 json vba excel jira-rest-api

概括

我正在尝试访问从我目前正在使用的 API 返回的深层嵌套 JSON。使用 VBA-JSON通过这个过程非常容易,但我遇到了一个小障碍。在大多数情况下,我已经让这个库正常工作,但是每当我尝试抓取嵌套在 JSON 响应中的项目(超过 2 个 JSON 级别)时,我都会收到错误消息。我将提交这篇文章,然后我会去收集一些我得到的错误代码。在我的脑海中,我知道我得到了 Run-time error '13'当我尝试使用下面的代码时不起作用。我认为(可能是错误的)我足够聪明,可以理解类型不匹配错误,但我不知道如何解决它。

这个作品

For i = 1 To 20
    ActiveSheet.Cells(i + 1, 5) = Json("issues")(i)("key")
    ActiveSheet.Cells(i + 1, 6) = Json("issues")(i)("id")
Next

不工作
For i = 1 To 20
    ActiveSheet.Cells(i + 1, 7) = Json("fields")(i)("summary")
Next

这些都不起作用
ActiveSheet.Cells(i + 1, 7) = Json("fields")(i)("summary")
ActiveSheet.Cells(i + 1, 7) = Json("fields")("summary")
ActiveSheet.Cells(i + 1, 7) = Json("issues")("fields")("summary")

ActiveSheet.Cells(i + 1, 7) = Json("fields")("assignee")(i)("name")
ActiveSheet.Cells(i + 1, 7) = Json("issues")("fields")("assignee")(i)("name")

更新了一些 JSON

我编辑了出于隐私原因返回的 JSON(显然)。
{
  "expand": "schema,names",
  "startAt": 0,
  "maxResults": 50,
  "total": 28,
  "issues": [ {
    "expand": "",
    "id": "94581",
    "self": "",
    "key": "",
    "fields": {
      , "assignee": {}
      , "status": {}
      , "votes": {}
      , "summary": ""
      ,
      , "issuetype": {}
      , "timespent": null,
    }
  }
  ,
  {}
  ,
  {}
  ,
  {}
  ]
}

根据这个数据结构,我的代码应该找对了地方,对吧?

想法? :)

PS:对不起,如果行话被关闭,我是一个爱好的开发人员,而不是工作。 :)

最佳答案

问题

嵌套数组实际上是问题所在。 JSON 项目的第 2 级不是数组,而“字段”是。

为了解决这个问题,我们需要在代码中添加一个 (i + 1)。

工作代码示例

''''''''
' Loop '
''''''''

For i = 1 To 20
    ActiveSheet.Cells(i + 1, 5) = Json("issues")(i)("key")
    ActiveSheet.Cells(i + 1, 6) = Json("issues")(i)("id")
    ActiveSheet.Cells(i + 1, 7) = Json("issues")(i + 1)("fields")("summary")
    ActiveSheet.Cells(i + 1, 8) = Json("issues")(i + 1)("fields")("watches")("watchCount")
    ActiveSheet.Cells(i + 1, 9) = Json("issues")(i + 1)("fields")("workratio")
Next

更新 :(

所以,我设置了所有代码来运行我的报告,它正在工作,然后它随机停止(我在第 16 行左右看到它这样做)并给我另一个类型不匹配错误。

第 1-15 行是如何工作的,然后突然出现类型不匹配错误?

哈哈...

现在调试...

更新 2 :)

简单地与代码结构混合,没有问题,我在下面发布的解决方案可以正常工作。

关于json - 如何获取 ("fields")在 VBA-JSON 中工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46205368/

相关文章:

javascript - 导入Json数据无法绑定(bind)查看

VBA:从通用模块运行Workbook_BeforeClose,而不是事件工作簿的ThisWorkbook

vba - 如何在 Excel VBA 中使用 OR 和空单元格创建 IF 语句

sql-server - 使用 SQL Server 中的 Excel VBA 在新行中显示数据

Excel 数据透视表排除某些列总计

javascript - Json-Net、JSON日期时间解析

java - json序列化时排除字段

javascript - 如何使用 angularjs 编辑和验证 JSON 数据?

excel - 用于从 Internet Explorer 转换为 Edge 或 chrome 浏览器的 VBA 脚本

vba - 我是否需要将工作表作为 ByRef 或 ByVal 传递?