重命名对象中的键

时间:2016-02-24 10:02:56

标签: json

我有一个像这样的对象:

{A:{}, B:{}, C:{}, D:{}, E:{}}

我想将密钥从A B C D E重命名为key1,key2,key3,key4,key5。我怎么能这样做?

谢谢

4 个答案:

答案 0 :(得分:0)

您在问题中提出的JSON无效。正确的结构应该是这样的:

{
  "A": {},
  "B": {},
  "C": {},
  "D": {},
  "E": {}
}

实际上这个JSON也是有效的:

{
    "key1": {},
    "key2": {},
    "key3": {},
    "key4": {},
    "key5": {}
}

所以你可以重命名密钥。

您可以使用jsonlint等在线工具在出现问题时验证您的JSON对象

答案 1 :(得分:0)

试试这个:

function renameKey(obj, fromKey, toKey) {
    obj[toKey] = obj[fromKey];
    delete obj[fromKey];
}

var obj = {a: 5, b:6, c:7};
renameKey(obj, 'a', 'd');

console.dir(obj);  // Object b: 6 c: 7 d: 5

这假设你正在处理一个对象,但是如果你从json开始,只需在json字符串上调用它来转换:

var obj = JSON.parse(jsonString);

答案 2 :(得分:0)

你可以遍历当前的json对象,从对象中删除当前的键值对,设置新的键名并将其添加回对象:

var jsonData = {"A":{}, "B":{}, "C":{}, "D":{}, "E":{}};
var counter = 1;

console.log(jsonData);

$.each(jsonData, function(k, v) { 
        delete jsonData[k];
        k = "key"+counter;
        jsonData[k] = v;
        counter++;
});

console.log(jsonData);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

答案 3 :(得分:0)

在这种情况下,最简单的方法是使用replace:

var jsonstring = '[{A:{}, B:{}, C:{}, D:{}, E:{}}]';

jsonString = jsonString.replace("\"A\":", "\"KEY1\":");
jsonString = jsonString.replace("\"B\":", "\"KEY2\":");
jsonString = jsonString.replace("\"C\":", "\"KEY3\":");
jsonString = jsonString.replace("\"D\":", "\"KEY4\":");
jsonString = jsonString.replace("\"E\":", "\"KEY5\":");