规范化JSON对象键名称

时间:2017-05-04 09:44:37

标签: javascript json

我想编写一个函数来将JSON对象的键转换为更合适的名称。正如您在下面的JSON对象中看到的那样,键是1个字母,并且对任何人都不是非常易读或有用。因此,我想遍历对象(或类似的东西)并重命名所有键,然后返回此JSON。

{
    "e": "56049",
    "pp": "371861",
    "c": "GAME",
    "x": 2,
    "st": "2017-04-27T15:01:29Z",
    "o": 0,
    "r": true,
    "u": "2017-04-27T15:01:29Z",
    "t": "p",
    "i": "371871",
    "z": 1493305289586
}

2 个答案:

答案 0 :(得分:3)

您可以reduce对象键到新对象,例如:

const obj = {
  "e": "56049",
  "pp": "371861",
  "c": "GAME",
  "x": 2,
  "st": "2017-04-27T15:01:29Z",
  "o": 0,
  "r": true,
  "u": "2017-04-27T15:01:29Z",
  "t": "p",
  "i": "371871",
  "z": 1493305289586
}

// [key] -> [normalized name] mapping
const names = {
  "e": "e-name",
  "pp": "pp-name",
  "c": "c-name",
  "x": "x-name",
  "st": "st-name",
  "o": "o-name",
  "r": "r-name",
  "u": "u-name",
  "t": "t-name",
  "i": "i-name",
  "z": "z-name"
}

const renamedProps = Object.keys(obj).reduce((renamed, key) => {
  renamed[names[key]] = obj[key];
  return renamed;
}, {});

答案 1 :(得分:0)

var obj = {
        "e": "56049",
        "pp": "371861",
        "c": "GAME",
        "x": 2
    },
    names = ["e_new-name", "pp_new-name", "c_new-name", "x_new-name"],
    updated = {},
    keys = Object.keys(obj);

for (i = 0; i < keys.length; i++) {
    updated[names[i]] = obj[keys[i]];
}

console.log(JSON.stringify(updated));
// will print
// {"e_new-name":"56049","pp_new-name":"371861","c_new-name":"GAME","x_new-name":2}

jsfiddle