2012-12-25 45 views
2

特定的JSON我有几个JSON与"jsonObject_" + id名称瓦尔,例如:找到ID

var jsonObject_123 = ...; 

var jsonObject_456 = ...; 

等所有这些jsons有相同的格式,相同的按键,但不同的值。

我也有一个接收id作为参数的方法。

我需要根据id更改正确的jsonObject地址。也就是说,如果参数是123,我需要更改jsonObject_123.address

如何根据id参数获取对jsonObject_123的引用?

+0

为什么这些变量不是一个对象? – Blender

+1

仅供参考这些不是“JSON对象”。这些是普通的JavaScript对象。 JSON始终是一个字符串 - 它是*传输格式* - 只要您处理实际的对象,它就不再是JSON。 – Tomalak

+1

这么多相关的问题/重复:http://stackoverflow.com/search?q=javascript+variable+variables。 –

回答

4

首先对此处使用的术语进行一点小评论。你叫什么JSON变量与JSON无关。这些是简单的JavaScript变量。 JSON是一种序列化格式。

现在不同的地方这些变量的定义,你可以使用以下范围:

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

在这个例子中,我假定这些变量在全局范围内声明=>您可以通过访问它们window对象。您将不得不根据您的具体情况调整此代码。

但更好的方法是将所有这些变量到包含对象:

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

,然后当你要访问它:

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

我试过了。它没有工作。 –

+0

你有错误吗?因为“不起作用”并不是一个非常精确的问题描述。这里还有一个完整的工作示例:http://jsfiddle.net/qy2MJ/ –

+0

不,它只是没有改变价值。同样的事情发生时,我改变了功能,而不是ID我会发送整个JSON - 它并没有改变的价值。它只是保持不变。关于创建jsons数组的想法 - 我根据用户的动作动态创建这些jsons,所以我不能创建这样的数组 –