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

JavaScript中如何将对象数组的字符串表示转换为对象数组?

转换实现方案

你需要处理的核心问题有两个:

  • 原始字符串使用单引号包裹键名、属性值,不符合标准JSON的双引号语法要求,无法直接通过JSON.parse解析为JS对象
  • 解析完成后需要移除每个对象中多余的key3字段,匹配目标输出格式

方法1:原生安全实现(生产环境推荐)

无第三方依赖、无代码注入风险,适合所有正式场景使用:

// 原始待转换字符串
const originStr = "[{'key1': 'val1', 'key2': 'val2', 'key3': 'val3'}, {'key1': 'val1', 'key2': 'val2'}]";

// 第一步:将字符串内单引号统一替换为双引号,生成符合规范的JSON字符串
const standardJsonStr = originStr.replace(/'/g, '"');
// 第二步:解析为可操作的JS数组
const parsedArr = JSON.parse(standardJsonStr);
// 第三步:遍历数组移除key3字段,得到最终结果
// 写法1:解构赋值,不修改原解析对象(推荐)
const result = parsedArr.map(({ key3, ...restProps }) => restProps);

// 写法2:如果不需要保留原解析对象,也可以直接用delete删除属性
// const result = parsedArr.map(item => {
//   delete item.key3
//   return item
// })

console.log(result)
// 输出结果:[ { key1: 'val1', key2: 'val2' }, { key1: 'val1', key2: 'val2' } ]

注意:如果你的属性值中本身包含单引号字符,替换前需要先对值内的单引号做转义处理,避免破坏JSON结构


方法2:快速调试实现(仅本地使用)

如果只是本地调试处理固定字符串,可以用eval直接执行字符串表达式得到数组,代码更简洁,但存在代码注入风险,绝对禁止在生产环境处理非可信来源的字符串时使用:

const originStr = "[{'key1': 'val1', 'key2': 'val2', 'key3': 'val3'}, {'key1': 'val1', 'key2': 'val2'}]";
// 直接执行字符串表达式得到数组
const parsedArr = eval(`(${originStr})`);
// 后续过滤key3的逻辑和方法1一致
const result = parsedArr.map(({ key3, ...restProps }) => restProps);

内容的提问来源于stack exchange,提问作者Marcio G

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 22:27:31