创建javascript对象并将其转换为json后,我的对象未完全转换。
创建javascript对象。
var inputData = {
"StartDate": moment(startDate).format('YYYY[-]MM[-]DD'),
"EndDate": moment(endDate).format('YYYY[-]MM[-]DD'),
"AllRates": []
};
使用从API接收的对象填充数组。
for (var i = 0; i < dates.length; i++) {
$.getJSON(
"http://api.fixer.io/" + dates[i] + "?base=USD",
function (data) {
inputData.AllRates.push(data);
}
);
}
我得到一个如下所示的对象: console.log(inputData);
但是当我通过JSON.stringify()将对象转换为json时,我得到一个空数组:
{"StartDate":"2017-07-10","EndDate":"2017-07-13","AllRates":[]}
答案 0 :(得分:1)
您可能在请求中的数据到达并且调用了inputData.AllRates.push(data)
回调之前将对象转换为JSON。您必须跟踪到达的响应数量,并且仅在最后一个响应到达后转换为JSON:
var dateCount = dates.length;
var finished = 0;
for(var i = 0; i < dateCount; i++){
$.getJSON("http://api.fixer.io/" + dates[i] + "?base=USD",
function(data){
inputData.AllRates.push(data);
if(++finished === dateCount){
console.log(JSON.stringify(inputData));
}
});
}