【问题标题】:Run-time error ‘424’ Object required when parsing JSON解析 JSON 时需要运行时错误“424”对象
【发布时间】:2020-10-07 16:29:42
【问题描述】:

当我运行这个脚本时,它会在“For”循环以错误开始时停止:运行时错误“424”需要对象。

知道我错过了什么吗?

 Sub getdata()
    Dim XMLReq As New MSXML2.XMLHTTP60

    Dim JsonText As String
    Dim jsonObject As Object, item As Object
    Dim i As Long
    
    XMLReq.Open "POST", "https://es.investing.com/stock-screener/Service/SearchStocks", False
    XMLReq.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
    XMLReq.setRequestHeader "Accept", "application/json"
    XMLReq.setRequestHeader "X-Requested-With", "XMLHttpRequest"
    
    XMLReq.send "country%5B%5D=5&exchange%5B%5D=95&exchange%5B%5D=2&exchange%5B%5D=1&sector=5%2C12%2C3%2C8%2C9%2C1%2C7%2C6%2C2%2C11%2C4%2C10&industry=74%2C56%2C73%2C29%2C25%2C4%2C47%2C12%2C8%2C44%2C52%2C45%2C71%2C99%2C65%2C70%2C98%2C40%2C39%2C42%2C92%2C101%2C6%2C30%2C59%2C77%2C100%2C9%2C50%2C46%2C88%2C94%2C62%2C75%2C14%2C51%2C93%2C96%2C34%2C55%2C57%2C76%2C66%2C5%2C3%2C41%2C87%2C67%2C85%2C16%2C90%2C53%2C32%2C27%2C48%2C24%2C20%2C54%2C33%2C19%2C95%2C18%2C22%2C60%2C17%2C11%2C35%2C31%2C43%2C97%2C81%2C69%2C102%2C72%2C36%2C78%2C10%2C86%2C7%2C21%2C2%2C13%2C84%2C1%2C23%2C79%2C58%2C49%2C38%2C89%2C63%2C64%2C80%2C37%2C28%2C82%2C91%2C61%2C26%2C15%2C83%2C68&equityType=ORD%2CDRC%2CPreferred%2CUnit%2CClosedEnd%2CREIT%2CELKS%2COpenEnd%2CRight%2CParticipationShare%2CCapitalSecurity%2CPerpetualCapitalSecurity%2CGuaranteeCertificate%2CIGC%2CWarrant%2CSeniorNote%2CDebenture%2CETF%2CADR%2CETC%2CETN&eq_market_cap%5Bmin%5D=110630000&eq_market_cap%5Bmax%5D=1990000000000&pn=1&order%5Bcol%5D=eq_market_cap&order%5Bdir%5D=d"
    
    If XMLReq.Status <> 200 Then
        MsgBox "problem" & vbNewLine & XMLReq.Status & "- " & XMLReq.statusText
        Exit Sub
    End If
        
    Set jsonObject = JsonConverter.ParseJson(XMLReq.responseText)

    For Each item In jsonObject
        Debug.Print item("stock_symbol")
        Debug.Print item("symbol")
        Debug.Print item("exchange_trans")
        Debug.Print item("industry_trans")
        Debug.Print item("last_eu")
        Debug.Print item("pair_change_percent_eu")
        Debug.Print item("eq_market_cap_eu")
        Debug.Print item("totalCount")
        Debug.Print item("link")
    Next

End Sub

【问题讨论】:

  • item 是什么数据类型?
  • 应该是JSON结构的第一组数据。将其定义为对象就足够了,但仍然无法正常工作。

标签: json vba parsing


【解决方案1】:

我终于发现了我的错误...... JSON 结构作为一个对象出现,其中包含两个对象。我应该添加第二个对象的名称来获得我需要的东西。 这是更正的行:

     For Each item In jsonObject("hits")

【讨论】:

    猜你喜欢
    • 2018-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多