2017-05-04 62 views
0

我想编写一个函数来将JSON对象的键变成更合适的名称。正如您可以通过下面的JSON对象看到的,这些键是1个字母,并且对于任何人来说都不可读或不可用。因此,我想遍历对象(或类似的东西)并重命名所有的键,然后返回这个JSON。规范化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 
} 
+1

非程序员风格回答:搜索和在JSON文件替换... –

回答

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