2010-06-11 5 views
6

J'ai créé un tableau avec:Comment ajouter des valeurs à un objet JSON?

var msg = new Array(); 

, j'ai une fonction qui ajoutent des valeurs à ce tableau, cette fonction est:

function add(time, user, text){ 
    var message = [time, user, text]; 
    if (msg.length >= 50) 
     msg.shift(); 

    msg.push(message);   
} 

Comme vous pouvez le voir, si le tableau a 50 ou plus d'éléments je supprime le premier avec .shift(). Ensuite, j'ajoute un tableau en tant qu'élément.

Ok, le code fonctionne parfaitement, mais maintenant je dois boucler le tableau msg pour créer un obj JSON.

L'objet JSON devrait a ce format:

var obj = [ 
{'time' : time, 'user' : user, 'text' : text}, 
{'time' : time, 'user' : user, 'text' : text}, 
{'time' : time, 'user' : user, 'text' : text} 
] 

Je veux dire ... je dois tableau boucle msg puis stocker toutes les valeurs à l'intérieur de l'objet JSON. Je ne sais pas comment "concaténer" l'élément du tableau dans json obj.

Pourriez-vous m'aider?

Merci beaucoup d'avance!

+1

Il est généralement préférable d'initialiser tableau comme ce 'var msg = [];' au lieu de 'var msg = new Array(); ' – RaYell

Répondre

9

Je vais vous donner un exemple de votre fonction add:

function add(time, user, text){ 
    // this line is all I changed 
    var message = {'time' : time, 'user' : user, 'text' : text}; 

    if (msg.length >= 50) 
     msg.shift(); 

    msg.push(message);   
} 

Comme vous pouvez voir la variable de message n'est plus un tableau, mais il est l'objet que vous voulez qu'il soit. À partir de là, vous devriez être capable de trouver comment créer un nouveau tableau et ajouter les valeurs que vous voulez.

+0

ok mais, après que msg est un tableau, pas un objet JSON ... comment convertir? – Damiano

1

Essayez ceci:

var len = msg.length; 
var obj = []; 
for (var i = 0; i < len; i++) { 
    var item = { 
     'time': msg[i][0], 
     'user': msg[i][1], 
     'text': msg[i][2] 
    } 
    obj.push(item); 
} 
0

Je pense que vous voulez quelque chose comme ceci:

function add(time, user, text){ 
    var message = {time:time, user:user, text:text}; 
    if (msg.length >= 50) 
    msg.shift(); 

    msg.push(message);   
}