json - JSON 到 VBA - “根值”上的错误 13 不匹配
问题描述
我试图从 JSON API 获取一些信息,一切正常。因此,当我尝试解析 JSON“根”内的值时,我开始遇到不匹配错误。
我使用的代码如下:
Public Sub Times()
Dim http As Object, JSON As Object, i As Integer
Set http = CreateObject("MSXML2.XMLHTTP")
http.Open "GET", "https://api.cartolafc.globo.com/time/id/1084847/7", False
http.Send
Set JSON = ParseJson(http.responseText)
i = 2
Application.ScreenUpdating = False
Sheets("Youtube").Select
For Each Item In JSON
Sheets("Mais Escalados").Cells(i, 2).value = Item("pontos")
i = i + 1
Next
Application.ScreenUpdating = True
MsgBox ("Atualização Completa")
End Sub
我可以解析atletas
子项中的数据或任何其他更改代码的标题,如下所示:
Sheets("Mais Escalados").Cells(i, 2).value = Item("atletas")("nome")
但是,当我尝试解析诸如pontos
根目录之类的信息时,会出现不匹配错误。
解决方案
这将为您提供键“pontos”的根值:
JSON("pontos")
您不能像在发布的代码中显示的那样遍历根键:在尝试将其写入工作表之前,您需要检查每个键的值的类型:
Public Sub Times()
Dim http As Object, JSON As Object, i As Integer, k
Set http = CreateObject("MSXML2.XMLHTTP")
http.Open "GET", "https://api.cartolafc.globo.com/time/id/1084847/7", False
http.Send
Set JSON = ParseJson(http.responseText)
For Each k In JSON
Debug.Print k, TypeName(JSON(k))
Next
End Sub
输出:
atletas Collection clubes Dictionary posicoes Dictionary status Dictionary capitao_id Double time Dictionary patrimonio Double esquema_id Double pontos Double valor_time Double rodada_atual Double
推荐阅读
- java - 将字符串操作为 json 格式的 Java 代码
- php - 如何根据 PHP 中的内部数组键对数组进行分组?
- .net - AppDynamics 代理如何在内部检测 .NET 应用程序
- sql - SQL 查询逻辑到 Django ORM 查询逻辑
- visual-studio-code - Visual Studio Code:将选项卡从当前位置移动到最前面的热键?
- grails - 如何在小数点后面输入 3 位小数?
- python - 在不创建主题的情况下向 Pelican 添加 CSS 规则
- standards - 我在哪里可以找到 Red Hat 在构建 RHEL 时使用的 RFC 列表?
- php - 使用参数缓存请求的简单方法?
- sql-server - 无法根据 MonthNumber 和 YearNumber SSRS 2010 获取值