无法将javascript对象转换为json

时间:2017-07-30 09:16:11

标签: javascript jquery json

创建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":[]}

1 个答案:

答案 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));
      }
    });
}