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

如何移除JSON响应中的双引号,恢复图标数组引用功能?

解决API返回字符串形式数组引用的问题

看起来你遇到的核心问题是API把原本应该是数组引用的内容变成了字符串字面量,导致无法直接访问源数组。这里有两种靠谱的解决思路,你可以根据自己的场景选择:

方法1:解析字符串提取数组名和索引(安全推荐)

这种方法不需要执行动态代码,更安全,适合大多数场景。我们可以用正则表达式把字符串里的数组名和索引拆出来,再手动去访问对应的数组项。

示例代码:

假设你已经拿到了API返回的数组数据(比如叫apiResponse),同时你的源数组srcs是可访问的(全局或当前作用域内):

// 遍历API返回的每个对象
apiResponse.forEach(item => {
  // 用正则匹配 "srcs[15]" 这种格式
  const refMatch = item.avatar.match(/^(\w+)\[(\d+)\]$/);
  if (refMatch) {
    const [_, arrayName, indexStr] = refMatch;
    const index = parseInt(indexStr, 10);
    
    // 如果srcs是全局变量,用window[arrayName]访问;如果是局部变量,可以用一个映射对象
    // 局部场景示例:const arrayMap = { srcs }; 然后用 arrayMap[arrayName][index]
    item.avatar = window[arrayName][index];
  }
});

如果确定所有avatar字段都是srcs[xxx]格式,还可以简化代码:

apiResponse.forEach(item => {
  const index = parseInt(item.avatar.replace(/srcs\[(\d+)\]/, '$1'), 10);
  item.avatar = srcs[index];
});

方法2:使用eval(仅当API内容完全可信时用)

如果你能100%保证API返回的字符串没有恶意代码,也可以用eval直接执行这个字符串,把它转成实际的数组引用:

apiResponse.forEach(item => {
  // 只有当你完全信任API返回内容时才用这个!
  item.avatar = eval(item.avatar);
});

⚠️ 注意:eval会执行传入的任何代码,如果API被篡改返回恶意脚本,会有安全风险,所以除非你能完全控制API的输出,否则不推荐这种方法。

两种方法都能让你直接引用源数组srcs的对应项,而不需要把srcs[15]的值提前存入API返回的对象里。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 03:28:56