如何将JSON字符串(包含多个对象)放入JavaScript变量

时间:2017-04-28 14:11:19

标签: javascript arrays json

我有这个带有多个对象的JSON,这个JSON字符串可能带有比3更多的数据/对象。所以,无论信息是什么,我都需要创建一个对象数组。

[ {"endDate":"2017-04-18","nrC":2,"type":"CO","dataD":"2017-04-19","startDate":"2017-04-16"},  
  {"endDate":"2017-04-27","nrC":4,"type":"CP","dataD":"2017-04-23","startDate":"2017-03-26"},  
  {"endDate":"2017-04-27","nrC":7,"type":"CA","dataD":"2017-04-23","startDate":"2017-04-26"}
]
var USER_DAYS = {};

for(var i=0;i<json.length;i++){   
    var USER_DAYS = [  
      {
          id: json[i].nrC,
          date: json[i].dataD,
          title: json[i].type,
          start: new Date(json[i].startDate),
          end: new Date(json[i].endDate),
          allDay: true
      },            
    ];

    console.log(i); // prints 1,2,3
}

console.log(USER_DAYS) //prints the last object from that json.

因为JavaScript变量必须是带有 n 对象的数组,当我尝试打印它时,它应该打印3个对象而不是1个对象。现在我的控制台只显示一个,最后一个。

我需要USER_DAYS变量来包含该JSON中的所有对象。

3 个答案:

答案 0 :(得分:1)

每次循环时,都会创建一个新阵列并丢弃之前的任何内容。

在循环外创建 数组。

每次绕过它时都会将一个新对象推入其中。

// ALL CAPS is a convention used for constants. You don't have a constant. Don't use ALL CAPS
var user_days = []; // Create your array here
for (var i = 0; i < json.length; i++) {
  // _day_ singular. You're creating a single object here!
  // There's no `[]` here. That's outside the loop
  var user_day = {
    id: json[i].nrC,
    date: json[i].dataD,
    title: json[i].type,
    start: new Date(json[i].startDate),
    end: new Date(json[i].endDate),
    allDay: true
  };

  // Now put that object on the array you have already
  user_days.push(user_day);
}
console.log(user_days);

答案 1 :(得分:1)

您需要确保不是每次迭代都覆盖变量 e.g。

for

确保将数组定义为var json = [{ "endDate": "2017-04-18", "nrC": 2, "type": "CO", "dataD": "2017-04-19", "startDate": "2017-04-16" }, { "endDate": "2017-04-27", "nrC": 4, "type": "CP", "dataD": "2017-04-23", "startDate": "2017-03-26" }, { "endDate": "2017-04-27", "nrC": 7, "type": "CA", "dataD": "2017-04-23", "startDate": "2017-04-26" } ]; var USER_DAYS = []; for (var i = 0; i < json.length; i++) { USER_DAYS[i] = { id: json[i].nrC, date: json[i].dataD, title: json[i].type, start: new Date(json[i].startDate), end: new Date(json[i].endDate), allDay: true }; console.log(i); // prints 1,2,3 } console.log(USER_DAYS) //prints the Array we generated语句

之前的数组

所以这就变成了

{{1}}

答案 2 :(得分:-1)

您需要使用JSON.parse解析JSON字符串:

JSON.parse('[ {"endDate":"2017-04-18","nrC":2,"type":"CO","dataD":"2017-04-19","startDate":"2017-04-16"},{"endDate":"2017-04-27","nrC":4,"type":"CP","dataD":"2017-04-23","startDate":"2017-03-26"},{"endDate":"2017-04-27","nrC":7,"type":"CA","dataD":"2017-04-23","startDate":"2017-04-26"} ]')