目前,我的JSON看起来像这样:
var json = {"level" : [
{"hs": 20}, //one
{"no_hs": 30} //two
]};
我需要它看起来像这样:
var json = {"level" : [
{"education" : "hs", "amount" : 20}, //one
{"education" : "no_hs", "amount" : 30} //two
]};
如何拆分键值对,生成两个值,然后向它们添加键?
答案 0 :(得分:2)
您可以使用Object.keys()
获取密钥。
var object = { "level": [{ "hs": 20 }, { "no_hs": 30 }] };
object.level = object.level.map(function (a) {
var o = {};
Object.keys(a).forEach(function (k) {
o.education = k;
o.amount = a[k];
});
return o;
});
document.write('<pre>' + JSON.stringify(object, 0, 4) + '</pre>');
答案 1 :(得分:1)
您可以使用Object.keys(obj)
返回给定对象的键数组。 https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Object/keys
然后使用[0]
访问第一个密钥,因为您的对象只有一个键值对。
var json = {"level" : [
{"hs": 20}, //one
{"no_hs": 30} //two
]};
var ret = [];
json.level.forEach(function (item) {
var key = Object.keys(item)[0];
ret.push({
education: Object.keys(item)[0],
amount: item[key]
});
});
json.level = ret;
document.write('<pre>'+JSON.stringify(json, 0, 4) + '</pre>');
答案 2 :(得分:0)
更简单的方法...... 已解决1个地图功能... 对于level数组中的每个元素,获取对象的第一个键并返回新元素。
var json = {"level" : [
{"hs": 20}, //one
{"no_hs": 30} //two
]};
json.level = json.level.map(function(val) {
var key = Object.keys(val)[0];
return {
education: key,
amount: val[key]
};
});