[英]Defining JSON in node.js
所以我试图在node.js中使Alexa技能-但是,我似乎无法弄清楚如何定义json元素。 我需要加入所有元素,在这种情况下,它们是新闻API的标题。 我都使用console.logg'ed了,它们都可以,但是我要做的就是弄清楚如何使“ title”成为变量。 我如何才能使“ title”成为一个变量,以包括JSON文件中的所有标题。 这是我的代码:
var Alexa = require('alexa-sdk');
var request = require('request');
var APP_ID = "amzn1.ask.skill.36267067-d40c-460c-b07b-cc603b97be1b";
var url = "https://newsapi.org/v1/articles?source=googlenews&sortBy=top&apiKey=6e23e1ddb67e40cb93cf147718f18e36";
var handlers = {
'LaunchRequest': function () {
this.emit('NewsIntent');
},
// Get titles from JSON URL & Output it
'NewsIntent': function () {
request({
url: url,
json: true
}, function (error, response, body) {
if (!error && response.statusCode === 200) {
console.log(body.articles[0].title);
console.log(body.articles[1].title);
console.log(body.articles[2].title);
console.log(body.articles[3].title);
console.log(body.articles[4].title);
console.log(body.articles[5].title);
console.log(body.articles[6].title);
console.log(body.articles[7].title);
console.log(body.articles[8].title);
console.log(body.articles[9].title);
///// I need help here!!!!! ---->
/// need to define title, so I can speech emit it below.
this.emit(':tellWithCard', title.join(''));
}
});
}
};
exports.handler = function(event, context, callback) {
var alexa = Alexa.handler(event, context);
alexa.APP_ID = APP_ID;
alexa.registerHandlers(handlers);
alexa.execute();
};
使用map
遍历articles
数组,然后可以将它们稍后连接。
var titles = body.articles.map(function(article) {
return article.title;
});
注意:如果未定义任何标题,将在连接中显示。
更新:根据您的评论要点,您可以执行以下操作:
var handlers = {
'LaunchRequest': function() {
this.emit('NewsIntent');
},
// Get titles from JSON URL & Output it
'NewsIntent': function() {
request({
url: url,
json: true
}, function(error, response, body) {
var titles;
if (!error && response.statusCode === 200) {
console.log(body.articles[0].title);
console.log(body.articles[1].title);
console.log(body.articles[2].title);
console.log(body.articles[3].title);
console.log(body.articles[4].title);
console.log(body.articles[5].title);
console.log(body.articles[6].title);
console.log(body.articles[7].title);
console.log(body.articles[8].title);
console.log(body.articles[9].title);
titles = body.articles.map(function(article) {
return article.title;
});
this.emit(':tellWithCard', titles.join(''));
}
});
}
};
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.