2017-03-22 3 views
0

Ich versuche, ein JSON mit einer bestimmten Struktur vorzubereiten, über REST zu senden. Alle 250 Ereignisse möchte ich eine JSON-Nutzlast mit diesen Ereignissen senden. Ich versuche das mit dem unten stehenden Code zu emulieren, aber es liefert nichts zurück.Vorbereiten einer bestimmten JSON-Struktur mit Array

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 + ']}}'; 
    } 
} 

Die Nutzlaststruktur JSON Ich brauche wie Aussehen zu schaffen:

{ 
    "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" 
     }, 
     ... 
     ] 
    } 
} 

Sollte ich stattdessen join werden mit der Struktur herzustellen, oder gibt es eine bessere Lösung?

+1

'j = 250' ist die Zuweisung. – PHPglue

Antwort

1

Sie verwenden j = 0 falsch. Zumindest sollte es j == 0 sein. Aber wenn Sie das wollen alle 250 Ereignisse passieren, dann können Sie verwenden 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 + ']}}'; 
    }} 
0
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 
    } 
}); 
1

Der Code sollte wie folgt aussehen:

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); 
0

PHPglue richtig ist. und eventQueue ist ein Array, also gibt JSON.stringify() einen String mit Ersatz-Klammern zurück. Sie müssen nicht zusätzliche [] hinzufügen. andernfalls wäre es user_data: [[...]]

Verwandte Themen