2012-12-25 1 views
2

j'ai plusieurs JSON vars avec le nom de "jsonObject_" + id, par exemple:trouver un JSON spécifique id

var jsonObject_123 = ...; 

var jsonObject_456 = ...; 

etc. Tous ces jsons ont le même format, mêmes touches, mais des valeurs différentes.

J'ai également une méthode qui reçoit l'id comme argument.

Je dois modifier l'adresse jsonObject correcte en fonction de l'ID. Autrement dit, si l'argument est 123, je dois changer jsonObject_123.address

Comment puis-je obtenir la référence à jsonObject_123 basé sur l'argument id?

+0

Pourquoi ces variables non dans un objet ? – Blender

+1

FYI Ce ne sont pas des "objets JSON". Ce sont des objets JavaScript simples. JSON est toujours une chaîne - c'est un format de transport * - dès que vous traitez des objets réels, ce n'est plus JSON. – Tomalak

+1

Tant de questions/doublons connexes: http://stackoverflow.com/search?q=javascript+variable+variables. –

Répondre

4

D'abord une petite remarque sur la terminologie utilisée ici. Ce que vous appelez JSON vars n'a rien à voir avec JSON. Ce sont des variables javascript simples. JSON est un format de sérialisation.

Maintenant, en fonction de la portée où ces variables sont définies, vous pouvez utiliser les éléments suivants:

var id = '123'; 
window['jsonObject_' + id].address = 'some address'; 

Dans cet exemple, je suppose que ces variables sont déclarées dans la portée globale => vous pouvez y accéder par la window objet. Vous devrez adapter ce code en fonction de votre cas particulier.

Mais une meilleure approche serait de regrouper toutes ces variables dans un objet contenant:

var jsonObject = {}; 
jsonObject['123'] = { address: 'address 1' }; 
jsonObject['456'] = { address: 'address 2' }; 
... 

et puis quand vous voulez accéder:

jsonObject['123'].address = 'some new address'; 
+0

Je l'ai essayé. ça n'a pas marché. –

+0

Avez-vous eu une erreur? Parce que «ça n'a pas marché» n'est pas une description très précise du problème. Voici également un exemple de travail complet: http://jsfiddle.net/qy2MJ/ –

+0

non, cela n'a pas changé la valeur. la même chose s'est produite quand j'ai changé la fonction ainsi au lieu de l'identification je enverrai le json entier - il n'a pas changé la valeur du tout. c'est juste resté le même. En ce qui concerne votre idée de créer un tableau de jsons - je crée dynamiquement ces jsons en fonction des actions de l'utilisateur, donc je ne peux pas créer un tel tableau –