我试图准备一个具有特定结构的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
代替准备结构还是有更好的方法?
答案 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
}
});