所以我正在向新的twitch API发出请求,但我无法从响应中获取数据。
{
data:[
{
id:'28793268096',
user_id:'71092938',
game_id:'488552',
community_ids:[
],
type:'live',
title:'NEW EVENT POG ~ twitter.com/xqc',
viewer_count:9143,
started_at:'2018-05-22T17:09:12Z',
language:'en',
thumbnail_url:'https://static-cdn.jtvnw.net/previews-ttv/live_user_xqcow-{width}x{height}.jpg'
},
{
id:'28792267216',
user_id:'23220337',
game_id:'488552',
community_ids:[
Array
],
type:'live',
title:'Overwatch Ranked Season 2 Episode 16: Panic! On The Payload | !charity | !patch',
viewer_count:2332,
started_at:'2018-05-22T15:25:47Z',
language:'en',
thumbnail_url:'https://static-cdn.jtvnw.net/previews-ttv/live_user_emongg-{width}x{height}.jpg'
}
],
pagination:{
cursor:'eyJiIjpudWxsLCJhIjp7Ik9mZnNldCI6Mn19'
}
}
使用下面的代码我没有从数组中获取任何数据。
var reply = axios.get('https://api.twitch.tv/helix/streams?game_id=488552&type=live&first=2&language=en')
.then(function(response){
var datas = response.data;
//console.log(datas);
for(var i = 0; i < datas.length; i++) {
var cube = datas[i];
for(var j = 0; j < cube.length; j++) {
msg.reply(cube.id);
}
}
}).catch((error) => { console.log(error); });;
非常感谢任何帮助。
答案 0 :(得分:1)
data
数组中包含的值是对象,因此没有length
属性。因此,当您处理cube.length
时,表达式为false
且未运行msg.reply(cube.id)
。设置cube
后,您应该直接处理它。
在不知道你想要做什么的情况下,我无法提供更多指导。
答案 1 :(得分:0)
如果您使用带有javascript ES6的现代浏览器,这应该可行。 &#34;立方体&#34;对象只是数据数组的子代,所以你只需要遍历数组并抓住id。
response.data.forEach((el, i) => {
msg.reply(el.id);
});
这是一个小提琴:https://jsfiddle.net/tr7zmrw7/1/
如果你想要一种不太现代的方式,你可以这样做:
for(var i in response.data){
msg.reply(response.data[i].id);
}
答案 2 :(得分:0)
这里简化了你的例子。你可以看到它击中了错误块并显示:
{
"error": "Unauthorized",
"status": 401,
"message": "Must provide a valid Client-ID or OAuth token"
}
var reply = axios.get('https://api.twitch.tv/helix/streams?game_id=488552&type=live&first=2&language=en')
.then(function(response){
console.log(response)
}).catch((error) => {
console.log('got error')
console.log(error.response.data);
});
&#13;
<script src="https://unpkg.com/axios/dist/axios.min.js"></script>
&#13;
答案 3 :(得分:0)
你不要在这样的物体上循环。
你可以msg.reply整个对象:
var reply = axios.get('https://api.twitch.tv/helix/streams?game_id=488552&type=live&first=2&language=en')
.then(function(response){
var datas = response.data;
//console.log(datas);
for(var i = 0; i < datas.length; i++) {
msg.reply(datas[i]);
}
}).catch((error) => { console.log(error); });
或者遍历对象,如:
var reply = axios.get('https://api.twitch.tv/helix/streams?game_id=488552&type=live&first=2&language=en')
.then(function(response){
var datas = response.data;
for(var i = 0; i < datas.length; i++) {
for (var key in datas[i]) {
if (!datas[i].hasOwnProperty(key)) continue;
var obj = datas[key];
for (var prop in obj) {
if(!obj.hasOwnProperty(prop)) continue;
console.log(prop + " = " + obj[prop]);
}
}
}
}).catch((error) => { console.log(error); });