0
我無法從數組調用API端點。該數組包含我需要輸入到端點的值,以便獲取我需要的數據。我遇到的麻煩是當我通過API調用登錄數據時,我收到了JSON文本。但是,當我嘗試解析文本並從JSON文本中獲取特定值時,它不會給出結果。這裏是我工作的代碼:從陣列nodejs進行多個api端點調用
var http = require("http");
var areaCodes = ["'0071950')", "'0072850')", "'0073450')", "'0075700')", "'0076450')", "'0078700')", "'0900001')", "'0900000')"];
var results = [];
var encode = [];
//source: http://stackoverflow.com/questions/17811827/get-a-json-via-http-request-in-nodej
for(var i = 0; i < areaCodes.length; i++){
var realmStatus = "http://api.dol.gov/V1/Statistics/OES/OE_SERIES/?KEY=XXXXXXXXXXXXXXXXXXXXXXXXXX&$filter=(OCCUPATION_CODE eq '151131') and (AREA_CODE eq " + areaCodes[i];
encode.push(encodeURI(realmStatus));
var options = {
host: 'api.dol.gov',
path: encode[i],
type: 'GET',
dataType: 'json',
headers: {'accept' : 'application/json'}
};
console.log("Start");
var x = http.request(options,function(res){
console.log("Connected");
var str = '';
res.on('data', function(chunk) {
str += chunk;
});
res.on('data',function(data){
if(res.statusCode == 200){
//console.log("res status is good");
try{
var dataA = JSON.parse(str);
//run a for loop
for(var h = 0; h < dataA.d.results.length; h++){
var seriesNum = dataA.d.results[h].SERIES_ID;
array.push(seriesNum);
console.log(seriesNum);
}
//end for
}catch(e){
console.log('Error parsing JSON');
}
}
});
});
x.end();
}//end for loop
如果有什麼我做了錯誤我會很感激,如果有人願意來解釋,或者如果有我丟失的東西。謝謝!
嘿感謝您的快速反應,但是,這是行不通的。這很奇怪,因爲我爲另一個端點使用了相同的代碼,並且工作正常。唯一的區別是在另一個端點中,我沒有使用數組來存儲值來連接端點。 – learningToCode
問題是,當我運行程序時,我得到「Error parsing JSON」,意思是'try'塊沒有被執行。當我撥打我的另一個端點時,這不是問題 – learningToCode
我認爲原因是因爲您在第一個端點後立即調用第二個「data」。根據有效負載的大小,您可能只在一個數據中獲得完整的JSON(這可能是其他終端工作的原因),但對於這一個,該有效負載需要多個「數據」調用。不過,你在第一個之後調用了這個,所以你可能只有JSON的一半,這就是它拋出錯誤的原因。 – samanime