如何正确获取Ethermine API返回结果中response.data后的嵌套数据
Ethermine API数据取值解决方案
问题原因
你取值时的路径少了一层data字段。从你打印的response.data返回结构可以看出:
axios请求返回的顶层response.data是API的完整响应包,这个响应包内部还嵌套了一层独立的data属性,price、poolStats这些业务字段都属于内层的data对象,所以直接取response.data.price自然会返回undefined,调用eur属性就会抛出类型错误。
正确取值写法
正确的取值路径为response.data.data.price.eur,修改后的代码如下:
global.etherminepool = `https://api.ethermine.org/poolStats`; axios.get(etherminepool) .then(function(response) { // 先判断接口返回状态正常再取值,避免异常报错 if (response.data && response.data.status === 'OK') { const eurPrice = response.data.data.price.eur; console.log(eurPrice); } }) .catch(function (error) { console.log(error); }) .then(function () { // 始终执行的逻辑 });
点语法和方括号语法的区别
你提到的两种取值方式的差异如下:
- 点语法:适合属性名是合法变量标识符的场景,不需要额外加引号,你当前的场景直接用点语法就可以,写法更简洁
- 方括号语法:适合属性名包含特殊字符、属性名是动态变量的场景,需要把属性名放在引号内传入,和点语法效果完全一致,示例:
response.data['data']['price']['eur']
内容的提问来源于stack exchange,提问作者Julian
相关产品推荐
相关产品推荐

