更改JSON对象

时间:2014-02-26 09:08:17

标签: javascript json node.js

我有一个JSON对象

[ 
  { serial: 5456454, 'COUNT(*)': 1 }, 
  { serial: 563535434, 'COUNT(*)': 1 }, 
  { serial: 576757575, 'COUNT(*)': 1 }, 
  { serial: 785785758, 'COUNT(*)': 1 }, 
  { serial: 2147483647, 'COUNT(*)': 8 } 
]

我的要求是将其更改/转换为

[ 
  { serial: 5456454, count: 1 }, 
  { serial: 563535434, count: 1 }, 
  { serial: 576757575, count: 1 }, 
  { serial: 785785758, count: 1 }, 
  { serial: 2147483647, count: 8 } 
]

任何人都可以帮我这样做吗?

5 个答案:

答案 0 :(得分:4)

使用forEach方法(或循环访问数组,如果你想支持IE):

json.forEach(function (e) {
    e.count = e['COUNT(*)'];
    delete e['COUNT(*)'];
});

DEMO

答案 1 :(得分:4)

您可以使用EcmaScript 5中的 MAP 来执行此操作

var a = [ 
{ serial: 5456454, 'COUNT(*)': 1 }, 
  { serial: 563535434, 'COUNT(*)': 1 }, 
  { serial: 576757575, 'COUNT(*)': 1 }, 
  { serial: 785785758, 'COUNT(*)': 1 }, 
  { serial: 2147483647, 'COUNT(*)': 8 } 
];

a = a.map(function(t){
    return {serial: t.serial, count: t["COUNT(*)"]};
});

console.log(a);

答案 2 :(得分:2)

@tewathia's answer现场点亮。

如果您需要支持IE 8或更早版本,请改用:

for(var i = 0, l = json.length; i < l; i++) {
    json[i].count = json[i]['COUNT(*)'];
    delete json[i]['COUNT(*)'];
}

Demo

答案 3 :(得分:1)

枚举数组并创建具有所需属性的新对象。另请注意,您无法直接引用'COUNT(*)'属性

var newJsonArray = [];
for(var i = 0; i < jsonArray.length; i++) {
    var obj = jsonArray[i];
    var newObj = {};
    newObj.serial = obj['serial'];
    newObj.count = obj['COUNT(*)'];
    newJsonArray.push(newObj);
}

答案 4 :(得分:1)

请找到下面的代码和小提琴:

代码:

var b= [];
for(var i = 0;i<a.length-1;i++){
    var bElement = {};
    bElement.serial = a[i].serial;
    bElement.count = a[i]["COUNT(*)"];
    b.push(bElement);
}

小提琴:

http://jsfiddle.net/6Wjn3/