为什么可以';我给一个变量分配了一个JSON值,我可以在调试模式下看到这个值吗?

为什么可以';我给一个变量分配了一个JSON值,我可以在调试模式下看到这个值吗?,json,ms-access,Json,Ms Access,我遇到了从非逐项JSON对象检索值的问题。我认为这样做很简单……只需使用您想要的字段(例如JSON(“title”)引用对象即可。但我无法检索值,即使它存在 这段代码演示了我所说的。(请确保在“下一行”上放置一个断点,否则它将运行一段时间。)strID和strTitle值不会被分配,也不会打印出来。但是如果您转到立即窗口并键入 ?JSON2(“ID”) ?JOON2(“头衔”) 你得到了这些值。我做错了什么?为什么我不能把这些值转换成变量 Sub testMovie2() Dim Url As

我遇到了从非逐项JSON对象检索值的问题。我认为这样做很简单……只需使用您想要的字段(例如JSON(“title”)引用对象即可。但我无法检索值,即使它存在

这段代码演示了我所说的。(请确保在“下一行”上放置一个断点,否则它将运行一段时间。)strID和strTitle值不会被分配,也不会打印出来。但是如果您转到立即窗口并键入

?JSON2(“ID”) ?JOON2(“头衔”)

你得到了这些值。我做错了什么?为什么我不能把这些值转换成变量

Sub testMovie2()

Dim Url As String, data As String, data2 As String
Dim xml As Object, JSON As Object, JSON2 As Object, colObj As Object, colobj2 As Object, item, item2
Dim strID As String, strTitle As String

Url = "https://www.tiff.net/data/films-events-2018.json"
data = getHTTP(Url)
Set JSON = JsonConverter.ParseJson(data)
Set colObj = JSON("items")
For Each item In colObj
    Url = "https://www.tiff.net/data/films/" & item("id") & ".JSON"
    data2 = getHTTP(Url)
    Set JSON2 = JsonConverter.ParseJson(data2)
    strID = JSON2("ID")
    Debug.Print strID
    strTitle = JSON2("Title")
    Debug.Print strTitle
Next
End Sub

JSON2
是一个命令式对象,用于从下面的命令式用法中检索元素

带按键

JSON2.item(“id”)

JSON2.项目(“标题”)

带有索引

JSON2.Items()(4)

JSON2.Items()(5)


默认情况下,字典对象区分大小写

所以
JSON2(“ID”)
不等于
JSON2(“ID”)

要使其不区分大小写,请使用:

JSON2.CompareMode=vbTextCompare


代码:

Sub testMovie2()

    Dim url As String, data As String, data2 As String
    Dim xml As Object, JSON As Object, JSON2 As Object, colObj As Object, colobj2 As Object, item, item2
    Dim strID As String, strTitle As String

    url = "https://www.tiff.net/data/films-events-2018.json"
    data = getHTTP(url)
    Set JSON = JsonConverter.ParseJson(data)
    Set colObj = JSON("items")
    For Each item In colObj
        url = "https://www.tiff.net/data/films/" & item("id") & ".JSON"
        data2 = getHTTP(url)

        Set JSON2 = JsonConverter.ParseJson(data2)
        strID = JSON2.item("id")
        Debug.Print strID

        strTitle = JSON2.item("title")
        Debug.Print strTitle

    Next
End Sub
Function getHTTP(url) As String

    Dim data As String
    Dim xml As Object

    Set xml = CreateObject("MSXML2.ServerXMLHTTP")
    With xml
        .Open "GET", url, False
        .setRequestHeader "Content-Type", "text/json"
        .send
        data = .responseText
    End With

    getHTTP = data

End Function


什么是
getHTTP()
?可能还没有完成吗?他又来了!我认为在这三个线程中,在VBA中使用JSON的信息比在其他网络空间中使用JSON的信息要多。我不敢相信我现在获取所需数据的速度有多快。一件小事——JSON2.CompareMode=vbTextCompare语句似乎不起作用k、 你还用“text/json”回避了我的下一个问题参数。我无法识别最终结果文本字段中外来字符的格式,但必须有一种方法使它们在网站上正确显示。我会花大量时间详细说明问题和我尝试过的内容。多谢!