我正在使用 http://www.aspjson.com/ 中的经典 ASP JSON 类转换来自外部源的 JSON 提要以便在我的站点内使用。
对于单层集合,我做得很好。
JSON 看起来像这样:
{
"data":[
{
"message":"message 5",
"id":"5"
},
{
"message":"message 4",
"id":"4"
},
{
"message":"message 3",
"id":"3"
},
{
"message":"message 2",
"id":"2"
},
{
"message":"message 1",
"id":"1"
}
]
}
代码可以像这样很好地工作:
TheFeed = [url of external json feed]
Set objXML=Server.CreateObject("Microsoft.XMLHTTP")
objXML.Open "GET", TheFeed, False
objXML.Send
strContents=objXML.ResponseText
Set objXML=Nothing
Set oJSON = New aspJSON
oJSON.loadJSON(strContents)
For Each i In oJSON.data("data")
Set this = oJSON.data("data").item(i)
response.write this.item("message")
end if
next
但是,现在提要包含更多信息,其中一些信息位于该顶级集合的子集合中,我真的在努力研究如何使用我可用的数据/项目选项来访问它。可能是我做不到我想做的事,如果有人能证实这一点,我将不胜感激,但我假设更有可能是我的代码不正确。
所以我的更复杂的 feed 看起来更像这样(因为这是一个外部 feed,我无权控制 JSON 的生成方式,我只能使用我得到的东西):
{
"data":[
{
"message":"message 5",
"id":"5"
},
{
"message":"message 4",
"id":"4"
},
{
"message":"message 3",
"id":"3"
},
{
"message":"message 2",
"id":"2",
"attachments":{
"data":[
{
"subattachments":{
"data":[
{
"media":{
"image":{
"src":"1.jpg"
}
},
"type":"photo"
},
{
"media":{
"image":{
"src":"2.jpg"
}
},
"type":"photo"
},
{
"media":{
"image":{
"src":"3.jpg"
}
},
"type":"photo"
}
]
}
}
]
}
},
{
"message":"message 1",
"id":"1"
}
]
}
我真正喜欢做的是在我的初始循环中有一个辅助循环来浏览这些照片附件。但我只是不确定如何找到要循环的 JSON 的正确位。
到目前为止,我所做的一切都没有对我造成错误:
If Not IsEmpty(this.item("attachments")) Then
for each i in this.item("attachments")
set this2 = this.item("attachments").item(i)
response.write 'here'
next
end if
这仅在消息 2 上输出一个“此处”,这是我所期望的,但我似乎无法做任何进一步的事情。我尝试使用“子附件”或“附件”级别以下的任何其他内容时都会告诉我“对象不是集合”。
如果有人能阐明我做错了什么,我将不胜感激。
最佳答案
我没有充分使用“数据”项。
这段代码:
If Not IsEmpty(this.item("attachments")) Then
for each i in this.item("attachments").item("data").item(0).item("subattachments").item("data")
set this2 = this.item("attachments").item("data").item(0).item("subattachments").item("data").item(i)
response.write "here"
next
end if
返回我所希望的多个“这里”。我也可以在一个循环中完成一个循环,但由于第一个集合中只有一个项目,我只是使用 0 索引引用它。
我现在应该可以毫无问题地从他的子附件中找出我需要的元素。
关于json - 经典的 ASP JSON 子集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33803187/