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

Go AWS Lambda返回JSON至Vue前端时字符串解析异常问题

解决Lambda返回JSON字符串无法在Vue中直接遍历的问题

问题核心

你的Go Lambda存在双重JSON序列化问题:先用json.Marshal将文档切片转为JSON字节数组,再转成字符串作为响应body的值;而Lambda会自动将整个响应Map(包含statusCode、headers、body)序列化为JSON返回给前端。最终前端拿到的response.data.body是已经被序列化过的字符串,而非可直接遍历的数组。

解决方案1:后端调整(推荐)

取消手动序列化文档切片,直接将原始文档切片作为响应body的值,让Lambda自动完成整个响应的JSON序列化,避免双重处理:

// 从MongoDB获取文档切片
docs, err := fetchDocumentsFromMongo()
if err != nil {
    // 错误处理逻辑
    return map[string]interface{}{
        "statusCode": 500,
        "body":       "Failed to fetch documents",
    }, nil
}

// 直接返回文档切片作为body,Lambda会自动序列化整个响应
return map[string]interface{}{
    "statusCode": 200,
    "headers": map[string]string{
        "Content-Type": "application/json",
    },
    "body": docs,
}, nil

这样前端axios会直接解析整个响应为JSON对象,response.data.body就是可直接遍历的数组。

解决方案2:前端临时修复

如果后端暂时无法修改,可在前端手动解析body字符串为数组:

axios.get('/your-lambda-api-endpoint')
  .then(res => {
    try {
      // 将字符串形式的JSON转为JS数组
      const dataArray = JSON.parse(res.data.body);
      // 遍历数组创建模型对象
      const modelList = dataArray.map(item => convertObject(item));
      // 后续业务逻辑处理
    } catch (e) {
      console.error('解析body失败:', e);
      // 解析失败的容错处理
    }
  })
  .catch(err => console.error('请求失败:', err));

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 15:47:24