json本身是纯数据格式,不能直接重命名属性;需解析为javascript对象后创建新对象映射键名,支持手动解构、批量reduce或封装函数实现,注意不可变性及嵌套处理。

JavaScript 中 JSON 本身是纯数据格式,不包含行为或方法,因此不能直接“重命名”属性;真正操作的是解析后的 JavaScript 对象。重命名对象属性本质是创建一个新对象,把旧键的值赋给新键,并(可选)删除旧键。
手动映射:最直观可控的方式
适用于属性数量少、重命名规则明确的场景。通过解构 + 新对象字面量实现:
const original = { name: "Alice", age: 30 };
const renamed = {
fullName: original.name,
years: original.age
};
// { fullName: "Alice", years: 30 }
也可以用解构赋值简化写法:
Java JDK 25 来自 OpenJDK 官方归档,版本为 JDK 25,本条下载地址已指向官方 Windows x64 zip 安装包直链,适合调试旧项目或兼容旧版 Java 运行环境。
const { name: fullName, age: years } = original;
const renamed = { fullName, years };
批量重命名:用 Object.entries + reduce 构建映射表
适合属性较多或需动态配置映射关系的情况。先定义旧键 → 新键的映射对象,再遍历原对象:
const renameMap = { name: "fullName", age: "years", city: "location" };
const original = { name: "Bob", age: 25, city: "Beijing" };
const renamed = Object.entries(original).reduce((acc, [key, value]) => {
const newKey = renameMap[key] || key; // 未映射的保留原名
acc[newKey] = value;
return acc;
}, {});
// { fullName: "Bob", years: 25, location: "Beijing" }
兼容性与注意事项
重命名后若需转回 JSON 字符串,调用 JSON.stringify() 即可。注意以下几点:
- 原始对象不会被修改(除非显式 delete 原属性),推荐函数式处理,保持不可变性
- 嵌套对象需递归处理,单纯一层映射不生效
- 数组中的对象需遍历每个元素单独重命名
- 键名含特殊字符或空格时,映射表中要用字符串引号包裹(如 "user-id": "userId")
封装成可复用函数
把逻辑抽成函数,提升复用性:
function renameKeys(obj, map) {
return Object.fromEntries(
Object.entries(obj).map(([k, v]) => [map[k] || k, v])
);
}
// 使用
const data = { id: 1, user_name: "Tom" };
const result = renameKeys(data, { user_name: "username" });
// { id: 1, username: "Tom" }
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










