循环浏览Youtube搜索JSON响应

循环浏览Youtube搜索JSON响应

问题描述:

我正在使用ASPJson处理ASP和JSON(它曾经在此前托管http://www.aspjson.com/但该网站已不存在,但我从该网站获得的代码位于:https://pastebin.com/LJzikNAT循环浏览Youtube搜索JSON响应

这是我的电话到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 
%> 

麻烦的是,因为我遍历它的ID在var_id变量返回总是5DniDm9epIY,这是第一视频的ID - 它似乎并没有被改变每次通过循环,我不知道为什么?

var_id显示5次,因此代码可以看到“items”集合中有5个注释,但它并不是每次都通过循环转到下一个节点。

+0

[使用VBScript访问JSON数据的所有值]的可能的复制(http://*.com/questions/41610139/using-vbscript-to-access-all-values-in-json -data) – Lankymart

For Each永远不会引用参考result对象,它将包含当前的枚举值。

设置thisoJSON.data("items").item(thingy)将仅引用oJSON.data("items")集合中的第一个枚举值。不知道什么thingy是,但如果你在这种情况下,复制从其他地方这个代码,应该是你与枚举对象,result应使用(好像你从here得到它,然后在For Each但没有改变thingyresult在代码中使用它)

把上面一行

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

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


意识到我以前写过关于此的内容,但自从我使用这个库以来已经有一段时间了。

A: Using VBscript to access all values in JSON data

+1

谢谢你的帮忙@Lankymart。问题解决了。 – 4532066