2017-08-05 34 views
0

我正在爲node.js 6.10編寫一個AWS Lambda,用於使用Amazon的Alexa軟件進行學校項目,並且我沒有太多的Javascript經驗和JSON 。我的學校有一個運輸API來查找它是否在:https://prtstatus.wvu.edu/api/[TENDIGITTIMESTAMP]/?format=json如何解析AWS Lambda的URL中的JSON

如果我帶着郵票去那裏,我會得到「{」status「:」7「,」message「:」PRT已關閉。 ,「timestamp」:「1494028926」,「站」:[],「bussesDispatched」:「0」,「持續時間」:[]}「

我想得到的是消息,其他(我已經覆蓋了該部分)。我不知道的是如何分解來自URL的JSON響應或首先寫入請求。有人可以幫我弄清楚在我的項目中使用「消息」字符串要寫什麼?

到目前爲止,我有:

'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); 
}, 

感謝您的幫助!

+0

https://stackoverflow.com/q/19440589 – Aditya

+0

@ADITYA我看到了,但不知道足夠了解它。您能否通過在另一篇文章中使用的代碼中提供我的資源來回答這篇文章? – SharkbaitWhohaha

+0

[解析來自URL的JSON數據]的可能重複(https://stackoverflow.com/questions/19440589/parsing-json-data-from-a-url) – Sebas

回答

3

您是否可以在此處發佈來自URL的JSON響應,因爲這將有助於縮小該問題的範圍。

更新

你需要做一個HTTP GET請求API端點。你不會得到一個JSON響應,

var url = "http://prtstatus.wvu.edu/api/"+date+"/?format=json" 

您可以使用包像https://www.npmjs.com/package/request看看他們對你如何使它工作文檔。

這樣的事情,

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瀏覽器。我會發佈一個關於如何開始使用的鏈接。您還將在郵遞員中獲得您的API調用的直接代碼。 鏈接到郵遞員應用程序:https://chrome.google.com/webstore/detail/postman/fhbjgbiflinjbdggehcddcbncdddomop?utm_source=gmail

+0

在此URL:https://prtstatus.wvu。 edu/api/1501906657 /?format = json – SharkbaitWhohaha

+0

我們得到:{「status」:「7」,「message」:「PRT已關閉。」,「timestamp」:「1494028926」,「stations」:[], 「bussesDispatched」:「0」,「持續時間」:[]} – SharkbaitWhohaha

+0

這就是我所有的不幸。 – SharkbaitWhohaha