我有一个像这样的对象:
{A:{}, B:{}, C:{}, D:{}, E:{}}
我想将密钥从A B C D E重命名为key1,key2,key3,key4,key5。我怎么能这样做?
谢谢
答案 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\":");