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

如何将表示对象数组的字符串解析为JSON对象数组

问题原因
  • JSON.parse(JSON.stringify(t))属于无效操作:t本身是字符串类型,JSON.stringify会将普通字符串转为带转义的JSON字符串,再次parse只会得到和原t完全一致的字符串,此时tString仍是普通字符串,按下标取值自然返回第一个字符[
  • 你提供的原始字符串t本身格式非法:嵌套在数组内的JSON对象字符串,内部的双引号没有做转义处理,直接解析会抛出语法错误
正确实现方式

如果你可以修改源字符串的定义,先补全内部引号的转义,再做两次解析即可:

// 补全对象内部双引号的转义
let t = `["{\\"name\\": \\"a\\", \\"description\\": \\"b\\", \\"imageType\\": \\"c\\"}", "{\\"name\\": \\"aa\\", \\"description\\": \\"bb\\", \\"imageType\\": \\"cc\\"}"]`;
// 第一次解析得到字符串数组
const strArray = JSON.parse(t);
console.log(strArray[0]) // 输出 {"name": "a", "description": "b", "imageType": "c"}
// 第二次遍历解析得到对象数组
const tArray = strArray.map(item => JSON.parse(item))

如果原始字符串是后端返回无法手动修改,可以先通过字符串替换修复格式后再解析:

let t = `["{\"name\": \"a\", \"description\": \"b\", \"imageType\": \"c\"}", "{\"name\": \"aa\", \"description\": \"bb\", \"imageType\": \"cc\"}"]`;
// 替换修复非法引号格式
const fixedT = t.replace(/"{/g, '{"').replace(/}"/g, '"}').replace(/\\"/g, '"');
const tArray = JSON.parse(fixedT);
console.log(tArray[0])

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 23:24:03