繁体   English   中英

标准化JSON对象键名

[英]Normalise JSON object key names

我想编写一个函数,将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
}

您可以对象键简化为新对象,例如:

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;
}, {});
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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM