需求:需要将字段"cars",改为"data"
Car.json
[
{
"cars": [
{
"icon": "m_9_100.png",
"name": "奥迪"
},
{
"icon": "m_97_100.png",
"name": "阿斯顿·马丁"
}
],
"title": "A"
},
{
"cars": [
{
"icon": "m_21_100.png",
"name": "长城"
},
{
"icon": "m_203_100.png",
"name": "之诺"
}
],
"title": "Z"
}
]
方法一:使用正则
const data = require('./Car.json').data;
let json = changeData(data, 'data', 'cars');
//属性 "g"、"i" 和 "m",分别用于指定全局匹配、区分大小写的匹配和多行匹配
function changeData(data, newKey, oldKey) {
let str = JSON.stringify(data);
let reg = new RegExp(oldKey, 'a');
let newStr = str.replace(reg, newKey);
return JSON.parse(newStr);
}
方法二:使用递归
const data = require('./Car.json').data;
changeData2(data, 'data', 'cars');
// console.info(data)
function changeData2(date, newKey, oldKey) {
date.forEach(item => {
if (item[newKey] && item[newKey].length > 0)
changeData2(item[newKey], newKey, oldKey);
else if (item[oldKey]) {
item[newKey] = item[oldKey];
delete item[oldKey];
if (item[newKey].length) changeData2(item[newKey], newKey, oldKey);
}
});
}