JavaScript如何修改JSON对象属性名并赋值给本地对象?
JavaScript加载JSON并修改对象属性名实现方案
该操作完全可行,原生JavaScript无需引入第三方库即可实现。JavaScript没有提供直接重命名对象属性的内置API,核心实现逻辑分为两步:先读取解析JSON文件存入变量,再遍历数据按照字段映射规则生成新结构对象(或给对象添加新属性后删除旧属性)。
具体实现步骤
- 定义字段映射规则
你需要的字段对应关系如下:- 原字段
_id→ 新字段person_id - 原字段
index→ 新字段idx - 原字段
tags→ 新字段voiceLines
- 原字段
- 读取JSON文件并完成字段转换
推荐使用Array.map遍历原始数据直接生成符合字段要求的新对象,这种写法不会修改原始数据,能避免遍历过程中原对象被改动引发的异常。
浏览器环境代码示例
// 提前声明目标变量 let localobj; // 读取本地JSON文件并做转换 fetch('/你的JSON文件存放路径.json') .then(response => response.json()) .then(rawData => { // 遍历原始数组完成字段映射 localobj = rawData.map(item => { return { person_id: item._id, idx: item.index, voiceLines: item.tags } }) // 此处即可使用转换完成的localobj console.log('数据转换完成', localobj); })
Node.js环境代码示例
const fs = require('fs/promises'); let localobj; async function loadData() { // 读取本地JSON文件 const fileContent = await fs.readFile('./你的JSON文件存放路径.json', 'utf-8'); const rawData = JSON.parse(fileContent); // 完成字段转换 localobj = rawData.map(item => ({ person_id: item._id, idx: item.index, voiceLines: item.tags })) } loadData();
原地修改已加载数据的写法
如果你已经把原始JSON数据解析后存入了localobj,可以直接遍历数组原地修改属性:
localobj = localobj.map(item => { // 挂载新属性 item.person_id = item._id; item.idx = item.index; item.voiceLines = item.tags; // 删除旧属性 delete item._id; delete item.index; delete item.tags; return item; })
注意:如果原JSON数据里存在其他未在映射规则里的字段,上述写法会保留这些字段;如果只需要保留三个映射后的字段,用前面生成新对象的写法即可自动过滤多余字段。
内容的提问来源于stack exchange,提问作者Metgher Andrei
相关产品推荐
相关产品推荐

