经典ASP JSON子集合

时间:2015-11-19 11:52:27

标签: json vbscript asp-classic

我正在使用http://www.aspjson.com/中的Classic 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上输出单个'here',这是我所期望的,但我似乎无法做任何进一步的事情。我尝试使用“subattachments”或“附件”级别下面的任何其他内容告诉我“对象不是集合”。

如果有人能说清楚我做错了什么,我会非常感激。

1 个答案:

答案 0 :(得分:3)

我没有足够使用'数据'项目。

此代码:

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

返回我希望的多个“here”。我也可以在循环中完成一个循环,但由于第一个集合中只有一个项目,我只是使用0索引引用它。

我现在应该没有问题从他的子附件挖出我需要的物品。