2010-05-12 3 views
0

Mon objet JSON ressemble:comment construire une chaîne de id d'un objet JSON

User { ID: 234, name: 'john', ..); 

Je veux construire une chaîne de tous les numéros d'identification.

Comment est-ce que je peux faire ceci? y at-il un moyen plus élégant que ci-dessous?

var ids = ''; 
for(int x = 0; x < json.length; x++) 
{ 
     ids += json[x].Id + ","; 
} 
// strip trailing id 
+0

Vérifiez cette question: Qu'est-ce que http://stackoverflow.com/questions/759385/asp-netjquery-how-to-deserialize-json – Gabe

+0

type est votre variable 'json'? – Gumbo

+0

Votre objet n'est pas un JSON valide, pas même un JavaScript valide, et même s'il l'était, il ne pouvait contenir qu'un seul "ID" dans sa forme actuelle. Alors qu'est-ce que ça ressemble vraiment? – Tomalak

Répondre

2

Vous pouvez faire un tableau, utilisez .push() pour ajouter des éléments et .join() le résultat après, comme ceci:

var ids = []; 
for(int x = 0; x < json.length; x++) 
{ 
     ids.push(json[x].Id); 
} 
var idString = ids.join(','); 
0

Pour JavaScript 1.8 (ECMA-262 Edition 5) vous pouvez utiliser Array. réduire à faire essentiellement la même chose:

[{id:1},{id:2},{id:3}].reduce(function(a,b) { return a+','+b.id }, '').substr(1)

Si vous préférez accumuler des valeurs dans un arr ay et les concaténer à la fin faire:

[{id:1},{id:2},{id:3}].reduce(function(a,b) { a.push(b.id); return a }, []).join(',')

3

en supposant un réseau de plusieurs utilisateurs, ce qui est ce que votre question semble impliquer (même si l'exemple que vous présentez est ni JSON valide ni ne indiquent qu'il ya plus d'un objet utilisateur de type) ...

var jsonResult = [{ID: 1, name: 'John'}, {ID: 2, name: 'Bob'}]; 

var ids = jsonResult.map(function(user) {return user.ID;}).join(','); 
// ids will be "1,2" 
Questions connexes