You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用JavaScript将JSON中的列名替换为数组值

解决方案

首先要注意你提供的Json变量是对象字面量字符串,不是严格的JSON格式(严格JSON的键需要双引号),以下是两种可行的实现方式:

方法一:正则匹配直接替换

直接对字符串进行正则匹配,定位所有冒号前的键名,按顺序替换为数组中的值,最后处理最后一个键的冒号转等号:

const jsonStr = "{id: '1', name: 'Abednego Nasila', Reg: '123'}";
const arr = ['myId', 'Student_name', 'Adm.no'];

// 匹配冒号前的键名,依次替换为数组对应值
let result = jsonStr.replace(/(\w+)(?=:)/g, () => arr.shift() || match);
// 把最后一个冒号替换成等号(匹配末尾的: '123')
result = result.replace(/: '123'$/, "= '123'");

console.log(result);
// 输出:"{myId: '1', Student_name: 'Abednego Nasila', Adm.no = '123'}"

方法二:转对象重构(更安全)

先将字符串转为对象,再重新构建带有新键名的对象,最后转成目标格式的字符串:

const jsonStr = "{id: '1', name: 'Abednego Nasila', Reg: '123'}";
const arr = ['myId', 'Student_name', 'Adm.no'];

// 转成对象(仅在信任字符串内容时使用eval,若来源不可信建议先转严格JSON再用JSON.parse)
const originalObj = eval(`(${jsonStr})`);
const newObj = {};
const originalKeys = Object.keys(originalObj);

// 遍历原键和数组值,构建新对象
originalKeys.forEach((key, index) => {
  newObj[arr[index]] = originalObj[key];
});

// 转字符串并调整格式:去掉键的双引号,替换最后一个冒号为等号
let result = JSON.stringify(newObj)
  .replace(/"([^"]+)":/g, '$1:')
  .replace(/: "123"$/, "= '123'");

console.log(result);
// 输出:"{myId: '1', Student_name: 'Abednego Nasila', Adm.no = '123'}"

注意事项

  • 正则方法适合简单场景,若键名包含特殊字符(如空格、非字母数字符号),需要调整正则表达式适配。
  • 使用eval存在安全风险,若字符串来自不可信来源,建议先将其转换为严格JSON格式(给所有键添加双引号),再用JSON.parse解析。

内容的提问来源于stack exchange,提问作者Abednego Nasila

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 03:09:55