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
相关产品推荐
相关产品推荐

