使用数组准备特定的JSON结构

时间:2017-03-22 01:07:13

标签: javascript json

我试图准备一个具有特定结构的JSON来通过REST发送。每250个事件,我想发送带有这些事件的JSON有效负载。我试图使用下面的代码来模拟这个,但它没有返回任何内容。

var eventQueue = new Array();

for (j = 0; j < 251; j++) {
    var curr_timestamp = new Date().getTime();

    eventQueue.push({
        "client_ip" : "127.0.0.1",
        "timestamp" : curr_timestamp,
        "user_name" : "Robert"
    });

    if(j = 250) {
        var jString = JSON.stringify(eventQueue);
        var payload = '{"root":{"user_data":[' + jString + ']}}';
    }
}

我需要创建的JSON有效负载结构如下:

{  
   "root":{  
      "user_data":[  
         {  
            "client_ip":"127.0.0.1",
            "timestamp":"1723452955",
            "user_name":"Robert"
         },
         {  
            "client_ip":"127.0.0.1",
            "timestamp":"1723452956",
            "user_name":"Robert"
         },
         {  
            "client_ip":"127.0.0.1",
            "timestamp":"1723452957",
            "user_name":"Robert"
         },
         ...
      ]
   }
}

我应该使用join代替准备结构还是有更好的方法?

4 个答案:

答案 0 :(得分:1)

您错误地使用了j = 0。至少它应该是j == 0。但如果您希望每250个事件发生一次,那么您可以使用mod(%)

var eventQueue = new Array();

for (j = 0; j < 251; j++) {
    var curr_timestamp = new Date().getTime();

    eventQueue.push({
        "client_ip" : "127.0.0.1",
        "timestamp" : curr_timestamp,
        "user_name" : "Robert"
    });

    if(j % 250 == 0) {
        var jString = JSON.stringify(eventQueue);
        var payload = '{"root":{"user_data":[' + jString + ']}}';
    }}

答案 1 :(得分:1)

您的代码应如下所示:

var resObj = {root:{user_data:[]}};
for(var i=0; i<251; i++){;
  resObj.root.user_data.push({
    client_ip: '127.0.0.1',
    timestamp: new Date().getTime(),
    user_name: 'Robert'
  });
}
console.log(resObj);

答案 2 :(得分:0)

PHPglue是对的。和eventQueue是一个数组,因此JSON.stringify()将返回带有备用括号的字符串。你不需要添加额外的[]。否则它将是user_data:[[...]]

答案 3 :(得分:-1)

var eventQueue = [];

for (var j = 0; j < 250; j++) {
    eventQueue.push({
        client_ip: "127.0.0.1",
        timestamp: new Date().getTime(),
        user_name: "Robert"
    });
}

var payload = JSON.stringify({
    root: {
        user_data: eventQueue
    }
});