Node.js中如何将API响应转换为视图层可用的{app_sale_price.value}
Node.js API响应提取app_sale_price字段解决方案
原代码存在的问题
- 函数未声明async,直接使用await关键字会触发语法错误
- 先执行了res.send和return逻辑,后续的字段提取代码全程不会运行
- map回调的返回语法错误,直接写
{app_sale_price.value}既不符合对象声明规范,也无法返回目标字段值 - 响应处理逻辑混用:原代码同时写了
resp_result层级取值和response.json()调用,适配不同请求库的逻辑冲突
修正后代码
// 函数加async标识支持await语法 async function handleResponse(error, response) { if (!error) { try { // 处理响应转JSON,根据你使用的请求库二选一即可: // 1. 若用fetch/got等返回标准Response对象的库,保留下面这行 const jsonResponse = await response.json(); // 2. 若用axios/request等直接返回结构化数据的库,用下面这行替换上面的 // const jsonResponse = response; // 提取商品数组 const productList = jsonResponse['resp_result']['result']['products']['product']; // 批量提取所有商品的app_sale_price.value const arrayOfLists = productList.map(record => record.app_sale_price.value); // 直接返回处理好的数组给视图,res.send会自动完成序列化 res.send(arrayOfLists); // 若只需要返回你原代码里取下标为1的单个商品值,把上面两行替换为下面的即可 // const targetValue = productList[1].app_sale_price.value; // res.send(targetValue); } catch (e) { res.status(500).send('响应解析失败:' + e.message); } } else { res.status(500).send('请求失败:' + error.message); } }
内容的提问来源于stack exchange,提问作者Shaiful Rizal Shaharudin
相关产品推荐
相关产品推荐

