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

如何使用JSON.parse将包含JSON对象的字符串数组转换为真实数组

问题原因

  • 你的代码存在两处核心错误导致无法正常运行:
    1. 标准JSON规范要求键名和字符串类型的值必须使用双引号包裹,你原字符串里使用的是单引号,不符合JSON.parse的语法要求,会直接抛出解析错误。
    2. 你定义的test变量本身已经是包裹了[]的数组格式字符串,你又额外拼接了一层[],就算解析成功也会得到二维数组,和你需要的结果不符。

可行解决方法

方法1:替换单引号为双引号后解析(推荐,无安全风险)

先把字符串里的单引号全部替换为符合JSON规范的双引号,再调用JSON.parse即可:

var test = "[{'test1':1,'test2':2},{'test1':1,'test2':2}]";
// 替换单引号为双引号,旧环境不支持replaceAll可换成正则写法 test.replace(/'/g, '"')
var formattedStr = test.replaceAll("'", '"');
// 直接解析即可,不需要额外加[]
var array = JSON.parse(formattedStr);

运行后array就是你需要的数组对象,完全符合需求。

方法2:使用eval解析(仅适用于你完全确认字符串来源安全的场景)

如果不想做字符串替换,且能确保这段字符串不会有恶意注入风险,可以直接用eval解析:

var test = "[{'test1':1,'test2':2},{'test1':1,'test2':2}]";
var array = eval('(' + test + ')');

注意:eval会执行字符串里的所有代码,如果字符串来源不可控,会存在XSS安全风险,非必要不推荐使用该方法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 07:09:03