调用Kraken公共API遇动态键 如何获取a数组首个价格数值
问题原因
你的代码使用点语法访问动态属性时出错:lastArray.key会把key作为固定的属性名去读取,而非使用你遍历得到的动态变量key存储的实际键名(比如XXBTZUSD),所以返回null。
解决方法
将属性访问方式改为方括号语法即可读取动态键对应的值,你可以选择以下两种写法的任意一种:
写法1:保留原有for循环逻辑,仅修改属性访问方式
function coin() { var url = 'https://api.kraken.com/0/public/Ticker?pair=BTCUSD'; var apiRequest = UrlFetchApp.fetch(url); var jsonResponce = JSON.parse(apiRequest); var lastArray = jsonResponce.result; Logger.log(lastArray) // 获取动态键名 var dynamicKey for (var key in lastArray) { dynamicKey = key } Logger.log(dynamicKey) // 方括号语法读取动态键对应的值,再取a数组第一个元素 var targetPrice = lastArray[dynamicKey].a[0]; Logger.log(targetPrice) // 如需转为数字可以用 Number(targetPrice) }
写法2:用内置方法简化获取动态键的逻辑,无需写for循环
function coin() { var url = 'https://api.kraken.com/0/public/Ticker?pair=BTCUSD'; var apiRequest = UrlFetchApp.fetch(url); var jsonResponce = JSON.parse(apiRequest); var result = jsonResponce.result; // 直接获取result下第一个动态键名 var dynamicKey = Object.keys(result)[0]; // 读取a数组第一个值 var targetPrice = result[dynamicKey].a[0]; Logger.log(targetPrice); }
内容的提问来源于stack exchange,提问作者johnvan
相关产品推荐
相关产品推荐

