2013-02-12 437 views
1

鉴于以下数据:JS:如何将变量追加到JSON中?

var json = [ 
{ 'myKey': 'A', 'status': 0 }, 
{ 'myKey': 'B', 'status': 1 }, 
{ 'myKey': 'C', 'status': 1 }, 
{ 'myKey': 'D', 'status': 1 } 
]; 

我要追加一个新的数组变量 “ID”,是这样的:

var Id = "aNewLetterFunction"; 
json.push({'myKey':'+Id+','status':1}); //this doesn't work 

我该怎么办,因为+ Id +本身不被认为是一个变量? JSfiddle.net赞赏 。

编辑:fiddle available


我尝试这样各种各样的事情:

json.push('{"myKey":"'+Id+'","status":1},'); 

var ar1 = '{"myKey":"'; 
var Id = Id; 
var ar2 = '","status":1},'; 
json.push(ar1+Id+ar2); 

回答

2

创建一个对象,不创建一个JSON字符串:

json.push({ 
    myKey:Id, 
    status:'1' 
}); 

您不希望将其他值添加到JSON,而是添加到可以解析为JSON字符串但不是字符串的数组。

Live DEMO

+0

该做的工作! – Hugolpz 2013-02-12 19:51:40

+1

@Hugolpz,请记住,没有这种东西的JSON对象,有一个JSON字符串可以转换为对象或其他方式。 – gdoron 2013-02-12 19:56:20

+0

好的。谢谢你的诀窍。 – Hugolpz 2013-02-12 20:14:30

2

只需使用

json.push({'myKey':Id, 'status':1}); 

你不想用这些变量名的字符串,但使用变量?

+0

这也是工作。 – Hugolpz 2013-02-12 19:53:07

3

json可能不是一个好的变量名称,因为你有一个对象数组,JSON根据定义是一个字符串。

该说明之外,你只需构造一个对象字面和推送:

var Id = "aNewLetterFunction"; 
json.push({ 
    myKey: Id, 
    status: 1 
}); 
+0

这也做这个工作! – Hugolpz 2013-02-12 19:57:52