You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

NodeJS调用Coindesk接口用下标访问bpi属性报错如何解决?

问题核心原因

你混淆了 JavaScript 中普通对象和数组的访问规则:

  • 数组是用方括号 [] 包裹的有序集合,只能通过数字下标(从0开始)访问元素
  • 普通对象是用大括号 {} 包裹的键值对集合,只能通过属性名(字符串类型)访问属性

你返回的JSON结构里,bpi 字段是大括号包裹的普通对象,它的属性名是 USD、GBP、EUR 三个字符串,不存在数字为0的属性,所以priceData.bpi[0]返回的是undefined,尝试读取undefined的description属性就会抛出你遇到的类型错误。

解决方案

方案1:直接通过属性名访问(推荐,性能最高)

就是你最开始的正确写法,两种写法等价:

// 点语法访问
console.log(priceData.bpi.USD.description);
// 方括号语法访问,属性名以字符串形式传入
console.log(priceData.bpi['USD'].description);

方案2:转数组后按下标访问(适合不想写死属性名的场景)

如果确实需要按顺序获取第一个币种的信息,可以先把bpi对象的所有值转为数组,再用下标访问:

response.on("data", function(data){
  const priceData = JSON.parse(data);
  // 把bpi的所有属性值转为数组,顺序和接口返回的属性顺序一致
  const bpiArr = Object.values(priceData.bpi);
  console.log(bpiArr[0].description);
})

内容的提问来源于stack exchange,提问作者nc14

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 07:15:05