2017-06-18 51 views
1

我想提取一个JSON API的内容,但无论我尝试多少种方式,控制台总是说未定义。我可以得到整个字符串来显示,但我只对显示Question对象感兴趣。经过8个小时的尝试和搜索这里和谷歌,我正在探索并寻求指导。节点js远程JSON对象回来undefined

var url = 'https://opentdb.com/api.php?amount=1&category=15&type=multiple'; 

https.get(url, function(res){ 
var body = ''; 

res.on('data', function(chunk){ 
    body += chunk; 
}); 

res.on('end', function(){ 
    var trivapi = JSON.parse(body); 
    console.log("Got a response: ", trivapi[0].question); 
}); 
}).on('error', function(e){ 
    console.log("Got an error: ", e); 
}); 

回答

1

它看起来像你正在做的一切正确,但错过了results包装。这里是你的代码为我工作:

var https = require('https') 
var url = 'https://opentdb.com/api.php?amount=1&category=15&type=multiple'; 

https.get(url, function(res){ 
var body = ''; 

res.on('data', function(chunk){ 
    body += chunk; 
}); 

res.on('end', function(){ 
    var trivapi = JSON.parse(body); 
    console.log("Got a response: ", trivapi.results[0].question); 
}); 
}).on('error', function(e){ 
    console.log("Got an error: ", e); 
}); 
+0

非常感谢你!我到处寻找解决办法,并准备扔下毛巾!你太棒了!!! – Palgrave

+0

@Palgrave没问题!请接受答案,如果它解决了你的问题:) – Catalyst