Javascript 如何从AWS Lambda的URL解析JSON

Javascript 如何从AWS Lambda的URL解析JSON,javascript,json,node.js,Javascript,Json,Node.js,我正在node.js 6.10中为一个学校项目用Amazon的Alexa软件编写一个AWS Lambda,我对Javascript没有太多经验,对JSON也没有经验。我的学校有一个交通API,用于查找是否在: 如果我带着邮票去那里,我会得到“{”状态“:“7”,“消息“:“PRT已关闭”,“时间戳“:“1494028926”,“站点“:[]”,“bussesDispatched:“0”,“持续时间“:[])” 我试图得到的是信息,并将其传递给其他人(我已经涵盖了这一部分)。我不知道的是如何从UR

我正在node.js 6.10中为一个学校项目用Amazon的Alexa软件编写一个AWS Lambda,我对Javascript没有太多经验,对JSON也没有经验。我的学校有一个交通API,用于查找是否在:

如果我带着邮票去那里,我会得到“{”状态“:“7”,“消息“:“PRT已关闭”,“时间戳“:“1494028926”,“站点“:[]”,“bussesDispatched:“0”,“持续时间“:[])”

我试图得到的是信息,并将其传递给其他人(我已经涵盖了这一部分)。我不知道的是如何从URL中分离JSON响应或首先编写请求。有人能帮我弄清楚在我的项目中使用“message”字符串要写什么吗

到目前为止,我已经:

'getPRTStatus': function() {
    var date = Math.round(new Date().getTime()/1000);
    //this is the spot where I need help filling in
    //var object = JSON.parse('http://prtstatus.wvu.edu/api/'+date+'/?format=json');
    this.attributes.speechOutput = this.t(object.message);
    this.attributes.repromptSpeech = this.t(object.message);
    this.emit(':ask', this.attributes.speechOutput, this.attributes.repromptSpeech);
},

谢谢你的帮助

您是否可以从URL在此处发布JSON响应,因为这将有助于缩小问题的范围

更新

您需要向API端点发出http get请求。您将不会得到JSON响应

var url = "http://prtstatus.wvu.edu/api/"+date+"/?format=json"
您可以使用一个软件包,比如查看他们的文档,了解如何使其工作

像这样的,

var options = {
        "method": "get",
        "url": "http://prtstatus.wvu.edu/api/1501906657/?format=json",
    }

request(options, function(err, response, body) {
        if (err) {
           console.log(err)
        } else {
           console.log(body);
        }
另一次更新

你可以试一下

var request = require('request'); //Import the NPM package
var object; //global variable to be used later on to store the response
那么在你的功能上,

'getPRTStatus': function() {
      var date = Math.round(new Date().getTime()/1000);
      var options = { 
          'method' : 'get',
          'url' : 'http://prtstatus.wvu.edu/api/' + date + '/?format=json'
       };

       request(options, function(err, response, body){
           if(err) {
              console.log(err);
           }
           else {
              object = JSON.parse(body); //You got the response parsed & stored in the global variable named object 
           }

        });

       this.attributes.speechOutput = this.t(object.message);
       this.attributes.repromptSpeech = this.t(object.message);
       this.emit(':ask', this.attributes.speechOutput, 
       this.attributes.repromptSpeech);
}
刚刚根据你的问题更新了我的答案。希望有帮助。对于任何未来与API相关的问题,您应该尝试使用chrome中的Postman。我将发布一个关于如何开始的链接。您还将在postman中获得API调用的直接代码。
链接到postman应用程序:

您是否可以从URL在此处发布JSON响应,因为这将有助于缩小问题的范围

更新

您需要向API端点发出http get请求。您将不会得到JSON响应

var url = "http://prtstatus.wvu.edu/api/"+date+"/?format=json"
您可以使用一个软件包,比如查看他们的文档,了解如何使其工作

像这样的,

var options = {
        "method": "get",
        "url": "http://prtstatus.wvu.edu/api/1501906657/?format=json",
    }

request(options, function(err, response, body) {
        if (err) {
           console.log(err)
        } else {
           console.log(body);
        }
另一次更新

你可以试一下

var request = require('request'); //Import the NPM package
var object; //global variable to be used later on to store the response
那么在你的功能上,

'getPRTStatus': function() {
      var date = Math.round(new Date().getTime()/1000);
      var options = { 
          'method' : 'get',
          'url' : 'http://prtstatus.wvu.edu/api/' + date + '/?format=json'
       };

       request(options, function(err, response, body){
           if(err) {
              console.log(err);
           }
           else {
              object = JSON.parse(body); //You got the response parsed & stored in the global variable named object 
           }

        });

       this.attributes.speechOutput = this.t(object.message);
       this.attributes.repromptSpeech = this.t(object.message);
       this.emit(':ask', this.attributes.speechOutput, 
       this.attributes.repromptSpeech);
}
刚刚根据你的问题更新了我的答案。希望有帮助。对于任何未来与API相关的问题,您应该尝试使用chrome中的Postman。我将发布一个关于如何开始的链接。您还将在postman中获得API调用的直接代码。
邮递员应用程序链接:

@ADITYA我之前看到过,但我不太了解它。你能用我在另一篇文章中使用的代码来回答这篇文章吗?可能是@ADITYA的重复,我之前看到过,但知道的还不够多,无法理解。你能用我在另一篇文章中使用的代码来回答这篇文章吗?很遗憾,我们得到的可能是重复的:{“状态”:“7”,“消息”:“PRT关闭了”,“时间戳”:“1494028926”,“站点”:[],“bussesDispatched”:“0”,“持续时间”:[])这就是我所拥有的全部。他的问题是误导性的,他不知道怎么做是请求url,而不是解析json。我相信@Sebas所说的是正确的。这个问题似乎有误导性,你想做的是如何为这个url创建get请求,而不是解析它。你能告诉我你为什么这么做吗<代码>变量url=”http://prtstatus.wvu.edu/api/“+date+”/?format=json”var object=json.parse(url),因为如果url不是json,则不会对其进行解析。基本上就是这么做的,
JSON.parse('http://prtstatus.wvu.edu/api/“+date+”/?format=json')
,将收到一个错误,因为URL不是json。@CliveMac似乎正确。我不知道有什么区别,所以我想我在寻找编写正确代码以获得所需字符串输出的指导。我们得到:{“状态”:“7”,“消息”:“PRT已关闭”,“时间戳”:“1494028926”,“站点”:[],“bussesDispatched”:“0”,“持续时间”:[])不幸的是,这就是我仅有的问题。他的问题具有误导性,他不知道怎么做是请求url,而不是解析json。我相信@Sebas所说的是正确的。这个问题似乎有误导性,你想做的是如何为这个url创建get请求,而不是解析它。你能告诉我你为什么这么做吗<代码>变量url=”http://prtstatus.wvu.edu/api/“+date+”/?format=json”var object=json.parse(url),因为如果url不是json,则不会对其进行解析。基本上就是这么做的,
JSON.parse('http://prtstatus.wvu.edu/api/“+date+”/?format=json')
,将收到一个错误,因为URL不是json。@CliveMac似乎正确。我不知道两者之间的区别,所以我想我正在寻找编写正确代码以获得所需字符串输出的指导。