JavaScript合并API返回JSON对象及汇率转换结果获取问题
解决API返回JSON对象合并与转换结果获取问题
问题根源
你当前代码无法获取result的原因很明确:API返回的result字段是根层级属性,和query同级,并不是query对象的子字段。原代码里objData.result = exchangeData['result'];这一行,试图从query对象里读取不存在的result字段,自然拿不到有效值。
正确实现方案
直接修改第二个then里的逻辑,从jsonResponse根节点取result,同时将query的属性与result合并到目标对象中:
.then((response) => { return response.json(); }) .then((jsonResponse) => { // 解构query对象的属性,再添加根层级的result字段 const objData = { ...jsonResponse.query, result: jsonResponse.result }; window.console.log('objData=' + JSON.stringify(objData)); this.conversionData = objData; }).catch(error => { window.console.log('callout error ' + JSON.stringify(error)); })
处理后objData的结构将完全符合你的需求:
{ "amount": 5, "from": "USD", "to": "EUR", "result": 4.878125 }
你之前尝试代码的问题
你写的合并代码存在几个关键错误:
- 错误地将
query定义为数组,但API返回的query是单个对象 obj2.result是空对象,push(...obj2.result)没有任何实际作用,空对象展开后无任何元素- 整体逻辑绕了不必要的弯路,无需先创建空结构再合并,直接基于API返回的数据处理即可
内容的提问来源于stack exchange,提问作者Afonja
相关产品推荐
相关产品推荐

