8

我想将此对象推送到 JSON 数组

var obj =  {'x':21,'y':32,'z':43};

由于我的 JSON 键:值是动态来的,我无法使用键访问,所以我使用了循环方法。

var str = {xA : []}; //declared a JSON array

for (var key in obj) {

    alert(' name=' + key + ' value=' + obj[key]);

     str.xA.push({
         key :   obj[key]
     })
}

当我提醒值时,我正在正确获取键和值,但是当我将其推送到数组时,我的键总是以“键”的形式出现,而不是像代码中的 x、y、z 这样的实际键。

任何帮助表示赞赏。

4

2 回答 2

11

文字表示法不允许键的表达式。您需要先创建对象,然后改用括号表示法:

var tmp = {};
tmp[key] = obj[key];
str.xA.push(tmp);
于 2013-09-30T18:43:20.937 回答
3

您需要使用[]表示法,否则键名始终是键名key而不是键的值。

 str.xA.push({
     key :   obj[key]
 })

   var tmp= {};
   tmp[key] = obj[key]
   str.xA.push(tmp)
于 2013-09-30T18:43:57.807 回答