拆分一个键值对,给他们新的键

时间:2016-03-31 14:00:12

标签: javascript json split key

目前,我的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
]};

如何拆分键值对,生成两个值,然后向它们添加键?

3 个答案:

答案 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]
        };
    });