遍历JSON数据的所有现有键并替换键中的特定字符

时间:2015-03-17 10:33:17

标签: javascript

我的JSON文件格式如下:

[{"key/1":"Value1", "key/2":"Value2" },
{"key/1.1":"Value1.1", "key/2.1":"Value2.1" },
{"key/1.2":"Value1.2", "key/2.2":"Value2.2" },
{"key/1.3":"Value1.3", "key/2.3":"Value2.3" }]

我的要求是搜索上述JSON格式的所有exixting密钥名称,并将斜杠(" /")字符重新转换为某个其他字符,以使新的JSON文件更改为具有新替换字符的密钥名称

请帮忙

由于

2 个答案:

答案 0 :(得分:0)

使用this function,您可以克隆该对象。只需稍微修改它就可以动态替换关键斜杠。

打开控制台并运行



function replaceSlashInKeys(obj) {
    if(obj == null || typeof(obj) != 'object') return obj;
    
    var temp = obj.constructor();
    
    for(var key in obj) {
        if(obj.hasOwnProperty(key)) {
            // Replace any slash with an underscore (in the key)
            temp[key.replace(/\//g, '_')] = replaceSlashInKeys(obj[key]);
        }
    }
    return temp;
}

// Example usage

var test = [{"key/1":"Value1", "key/2":"Value2" },{"key/1.1":"Value1.1", "key/2.1":"Value2.1" },{"key/1.2":"Value1.2", "key/2.2":"Value2.2" },{"key/1.3":"Value1.3", "key/2.3":"Value2.3" }];

// Got slashes
console.log(test);
// Replace them
test = replaceSlashInKeys(test);
// Got underscores
console.log(test);




答案 1 :(得分:0)

使用reduce函数的另一种方法可能是:

for (var i = 0; i < test.length; i++){
    Object.keys(test[i]).reduce(function (a, b) {
        test[i][b.toString().replace('/', '-')] = test[i][b];
        delete test[i][b];
    }, 1);
}

的jsfiddle:

https://jsfiddle.net/fwp7zj3k/