我正在使用 Access VBA 通过 API 访问电影信息。它工作正常,但我对名称为“名称”的属性有疑问,“名称”是保留字。
假设我想访问制作公司。我正在使用这段代码,如果我想获取 id,它工作正常,但如果我试图获取名称,它就不起作用,因为“名称”这个词是第 4 行中的保留字。
有谁知道如何解决它?
工作代码:
Set Keys1 = VBA.CallByName(jsonDecode1, "production_companies", VbGet)
movie_companies = ""
For Each Key In Keys1
movie_companies = movie_companies & **key.id** & ","
Next
不工作的代码:
Set Keys1 = VBA.CallByName(jsonDecode1, "production_companies", VbGet)
movie_companies = ""
For Each Key In Keys1
movie_companies = movie_companies & **Key.Name** & ","
Next
json文件:
production_companies: [ { name: "France 2 Cinéma", id: 83 }, { name: "SBS Productions", id: 8997 }, { name: "Les Films Français", id: 16782 } ],
谢谢你的回复,但我需要给你更多关于我在做什么的细节。是的,我正在使用一个集合,但我没有创建它,我只是使用 API 从网站导入数据,我还想让你知道,除了“名称”之外,所有其他属性都可以正常工作,可能是因为编辑器自动将“名称”一词的第一个字母大写,但它不将其他词大写,我如何避免编辑器将“名称”一词大写,也许这就是问题所在。再次感谢你
这就是整个代码:
Set sc = CreateObject("ScriptControl"): sc.language = "JScript"
Set oXMLHTTP1 = CreateObject("MSXML2.XMLHTTP")
oXMLHTTP1.Open "GET", URL, False 'Open socket to get the website
oXMLHTTP1.setRequestHeader "Content-Type", "application/x-www-form-urlencoded; charset=UTF-8"
oXMLHTTP1.send 'send request
Do While oXMLHTTP1.ReadyState <> 4
DoEvents
Loop
oResp = oXMLHTTP1.responseText 'Returns the results as a byte array
Set jsonDecode1 = sc.Eval("(" + oResp + ")")
Set Keys1 = VBA.CallByName(jsonDecode1, "production_countries", VbGet)
For Each Key In Keys1
movie_companies = movie_companies & Key.id & ","
movie_companies = movie_companies & Key.Name & ","
Next
现在我确定问题在于第一个字母是大写的,因为我有另一个名为“key”的属性,并且因为编辑器将其更改为带有大写 K 的“Key”,所以它也不起作用:)在代码编辑器中禁用将第一个字母更改为大写的方法?这肯定会解决问题