通过Youtube循环搜索JSON响应

时间:2017-04-17 08:52:29

标签: json vbscript asp-classic

我正在使用ASPJson处理ASP和JSON(它曾经在不久前托管在这里http://www.aspjson.com/但该网站已不再存在,但我从该网站获得的代码在这里:{{3 }})

这是我对Youtube的调用 - 例如:

https://www.googleapis.com/youtube/v3/search?part=id&q=london&type=video&key=[my_key]

返回此JSON数据:

{
 "kind": "youtube#searchListResponse",
 "etag": "\"m2yskBQFythfE4irbTIeOgYYfBU/o9DTjpevDXudxmhkLef6i-kAnRE\"",
 "nextPageToken": "CAUQAA",
 "regionCode": "GB",
 "pageInfo": {
  "totalResults": 1000000,
  "resultsPerPage": 5
 },
 "items": [
  {
   "kind": "youtube#searchResult",
   "etag": "\"m2yskBQFythfE4irbTIeOgYYfBU/Qq093B1iIdU7htjV5jYf2Erqxgk\"",
   "id": {
    "kind": "youtube#video",
    "videoId": "5DniDm9epIY"
   }
  },
  {
   "kind": "youtube#searchResult",
   "etag": "\"m2yskBQFythfE4irbTIeOgYYfBU/gbHSPn7IT-2OJG19vQZzKKTbG1s\"",
   "id": {
    "kind": "youtube#video",
    "videoId": "Zlu542Tx8Fc"
   }
  },
  {
   "kind": "youtube#searchResult",
   "etag": "\"m2yskBQFythfE4irbTIeOgYYfBU/KQSQBNAk2ArZd_XrpDOIfiMT0XM\"",
   "id": {
    "kind": "youtube#video",
    "videoId": "2tufxwCyrmE"
   }
  },
  {
   "kind": "youtube#searchResult",
   "etag": "\"m2yskBQFythfE4irbTIeOgYYfBU/wrbmiGkrH9v_QvtNpoIurXH9YQc\"",
   "id": {
    "kind": "youtube#video",
    "videoId": "1XU8AOZ0Inw"
   }
  },
  {
   "kind": "youtube#searchResult",
   "etag": "\"m2yskBQFythfE4irbTIeOgYYfBU/2sdAsprKoDKIt8mNVYd8prR8uVA\"",
   "id": {
    "kind": "youtube#video",
    "videoId": "vUO6kYLb6As"
   }
  }
 ]
}

这是我尝试循环结果的ASP代码:

<!--#INCLUDE file="../dist/asp/c.asp" -->
<!--#INCLUDE file="../dist/asp/aspJSON.asp" -->
<%
my_api = "my_key"
sendstring1 = "https://www.googleapis.com/youtube/v3/search?part=id&q=chester&type=video&key="&my_api&""
Set objXML = Server.CreateObject("MSXML2.ServerXMLHTTP")
objXML.Open "GET", sendstring1 , false
objXML.Send()

BackFromGoogle1 = objXML.responseText

Set oJSON = New aspJSON
oJSON.loadJSON(BackFromGoogle1)

For Each result In oJSON.data("items")
    Set this = oJSON.data("items").item(thingy)
    var_id = this.item("id").item("videoId")
    embed_code = "<iframe width='800' height='450' src='https://www.youtube.com/embed/"&var_id&"?rel=0&amp;wmode=opaque' frameborder='0' allowfullscreen></iframe>"
    response.write embed_code   
Next
%>

问题在于,当我循环播放时,var_id变量中返回的ID始终为5DniDm9epIY,这是第一个视频的ID - 它似乎不是每次都在循环中改变,我不确定为什么?

var_id显示5次,因此代码可以看到&#34;项目中有5个音符&#34;集合,但每次循环都不会出现在下一个节点上。

1 个答案:

答案 0 :(得分:0)

For Each从不引用引用包含当前枚举值的result对象。

this设置为oJSON.data("items").item(thingy)只会引用oJSON.data("items")集合中的第一个枚举值。不确定thingy是什么,但如果您从其他地方复制此代码应该是您要枚举的对象,在这种情况下result应该使用(看起来你从{ {3}}然后将thingy更改为result中的For Each,但未将其更改为代码中使用的位置

将该行更改为

Set this = oJSON.data("items").item(result)

返回对oJSON.data("items")集合中当前枚举对象的引用。

已经意识到我之前已经写过这篇文章,但是自从我使用这个库以来已经有一段时间了。

here