首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >JSON到VBA -错误13“根值”不匹配

JSON到VBA -错误13“根值”不匹配
EN

Stack Overflow用户
提问于 2018-06-05 04:09:31
回答 1查看 213关注 0票数 0

我试图从JSON API获取一些信息,但一切都很顺利。因此,当我尝试解析JSON“根”中的值时,我开始遇到不匹配错误。

我使用的代码如下:

代码语言:javascript
复制
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子项或任何其他头部中的数据,更改代码如下:

代码语言:javascript
复制
Sheets("Mais Escalados").Cells(i, 2).value = Item("atletas")("nome")

但是,当我试图解析根目录上的pontos之类的信息时,我得到了不匹配错误。

EN

回答 1

Stack Overflow用户

发布于 2018-06-05 04:21:46

这将为您提供键“pontos”的根值:

代码语言:javascript
复制
JSON("pontos")

您不能像在发布的代码中那样循环遍历根键:在尝试将每个键值写入工作表之前,您需要检查每个键值的类型:

代码语言:javascript
复制
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 status Dictionary capitao_id Double time字典patrimonio esquema_id Double valor_time Double rodada_atual Double

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50688057

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档