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

如何将字符串格式的JavaScript对象直接转换为可操作对象?

把非标准JS对象字符串转为可操作的JS对象

你提到的这个字符串确实不是标准JSON格式,直接用JSON.parse会报错,但有两种常见处理方式,我给你详细拆解:

方法一:转标准JSON后解析(推荐,安全)

你的字符串有三个不符合JSON规范的点:属性名未用双引号包裹、字符串用了单引号、多个对象的集合没有数组外层。我们可以用正则替换把它转成标准JSON,再解析:

const string_object = "{question_text: 'q 1', ans_1: 'yes', ans_2: 'no'}, {question_text: 'q 2', ans_1: 'United', ans_2: 'City'}, {question_text: 'q 3', ans_1: 'over', ans_2: 'under'}, {question_text: 'q 4', ans_1: 'over', ans_2: 'under'}, {question_text: 'q 5', ans_1: 'over', ans_2: 'under'}, {question_text: 'q 6', ans_1: 'over', ans_2: 'under'}";

// 1. 包裹成数组结构,给属性名加双引号,替换单引号为双引号
const validJson = `[${string_object}]`
  .replace(/(\w+):/g, '"$1":')
  .replace(/'/g, '"');

// 2. 解析为可操作的JS对象数组
const questionArray = JSON.parse(validJson);

// 测试访问
console.log(questionArray[0].question_text); // 输出 "q 1"

这个方法的核心是把非标准格式修正为JSON认可的规范,全程不会执行额外代码,安全性拉满,适合处理外部来源或不可信的字符串。

方法二:用eval直接解析(不推荐,有风险)

如果这个字符串是你自己生成的、完全可信的,那可以用eval直接转成数组对象,步骤更简单:

const string_object = "{question_text: 'q 1', ans_1: 'yes', ans_2: 'no'}, {question_text: 'q 2', ans_1: 'United', ans_2: 'City'}, {question_text: 'q 3', ans_1: 'over', ans_2: 'under'}, {question_text: 'q 4', ans_1: 'over', ans_2: 'under'}, {question_text: 'q 5', ans_1: 'over', ans_2: 'under'}, {question_text: 'q 6', ans_1: 'over', ans_2: 'under'}";

const questionArray = eval(`[${string_object}]`);

console.log(questionArray[1].ans_1); // 输出 "United"

⚠️ 重要提醒:eval会执行字符串里的任何JavaScript代码,如果这个字符串来自用户输入或其他不可信渠道,很容易被注入恶意代码,绝对不要在生产环境中使用这个方法。

总结

追求安全可靠就选第一种正则转JSON的方法;如果只是本地测试、字符串完全可信,第二种方法更快捷,但风险极高。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 05:35:21