当前位置: 首页 > 知识库问答 >
问题:

Nodejs返回区块链速率API的完整JSON,但我无法访问其中的特定对象。为什么?

徐经武
2023-03-14

我有一个向区块链发出请求的文件。info/ticker API以获取比特币的最新价格。

剧本js:

let request = require('request');
let url = "https://blockchain.info/ticker"

request.get(url,
function(error, response, body) {
    console.log(body); //first
    console.log(body.USD); //second
});

第一个控制台。请求中的log语句。获取回报:

{
  "USD" : {"15m" : 1034.99, "last" : 1034.99, "buy" : 1033.63, "sell" : 1034.99,  "symbol" : "$"},
  "ISK" : {"15m" : 116090.37, "last" : 116090.37, "buy" : 115937.82, "sell" : 116090.37,  "symbol" : "kr"},
  "HKD" : {"15m" : 8043.46, "last" : 8043.46, "buy" : 8032.89, "sell" : 8043.46,  "symbol" : "$"},
  "TWD" : {"15m" : 31374.69, "last" : 31374.69, "buy" : 31333.46, "sell" : 31374.69,  "symbol" : "NT$"},
  "CHF" : {"15m" : 1030.89, "last" : 1030.89, "buy" : 1029.53, "sell" : 1030.89,  "symbol" : "CHF"},
  "EUR" : {"15m" : 963.89, "last" : 963.89, "buy" : 962.63, "sell" : 963.89,  "symbol" : "€"},
  "DKK" : {"15m" : 7170.6, "last" : 7170.6, "buy" : 7161.17, "sell" : 7170.6,  "symbol" : "kr"},
  "CLP" : {"15m" : 685784.37, "last" : 685784.37, "buy" : 684883.24, "sell" : 685784.37,  "symbol" : "$"},
  "CAD" : {"15m" : 1380.41, "last" : 1380.41, "buy" : 1378.6, "sell" : 1380.41,  "symbol" : "$"},
  "CNY" : {"15m" : 7131.48, "last" : 7131.48, "buy" : 7122.11, "sell" : 7131.48,  "symbol" : "¥"},
  "THB" : {"15m" : 35634.71, "last" : 35634.71, "buy" : 35587.88, "sell" : 35634.71,  "symbol" : "฿"},
  "AUD" : {"15m" : 1349.36, "last" : 1349.36, "buy" : 1347.58, "sell" : 1349.36,  "symbol" : "$"},
  "SGD" : {"15m" : 1443.9, "last" : 1443.9, "buy" : 1442.01, "sell" : 1443.9,  "symbol" : "$"},
  "KRW" : {"15m" : 1155773.33, "last" : 1155773.33, "buy" : 1154254.62, "sell" : 1155773.33,  "symbol" : "₩"},
  "JPY" : {"15m" : 115110.38, "last" : 115110.38, "buy" : 114959.12, "sell" : 115110.38,  "symbol" : "¥"},
  "PLN" : {"15m" : 4072.84, "last" : 4072.84, "buy" : 4067.49, "sell" : 4072.84,  "symbol" : "zł"},
  "GBP" : {"15m" : 832.11, "last" : 832.11, "buy" : 831.01, "sell" : 832.11,  "symbol" : "£"},
  "SEK" : {"15m" : 9212.32, "last" : 9212.32, "buy" : 9200.21, "sell" : 9212.32,  "symbol" : "kr"},
  "NZD" : {"15m" : 1474.6, "last" : 1474.6, "buy" : 1472.66, "sell" : 1474.6,  "symbol" : "$"},
  "BRL" : {"15m" : 3232.68, "last" : 3232.68, "buy" : 3228.43, "sell" : 3232.68,  "symbol" : "R$"},
  "RUB" : {"15m" : 58287.38, "last" : 58287.38, "buy" : 58210.79, "sell" : 58287.38,  "symbol" : "RUB"}

}

第二个控制台。log语句返回:

undefined

我尝试了什么:我尝试将终端中获得的相同输出分配给chrome inspector中的一个变量,并访问不同的对象,只是为了测试我的语法是否正确。语法是正确的,所以我真的很困惑。

为什么是我的第二个控制台。日志语句未定义,我如何解决这个问题,以获得USD对象内部的“1500万”价格?

共有3个答案

邰伟彦
2023-03-14

对象中没有“usd”属性。尝试以下方法

console.log(body.USD);
苍元章
2023-03-14

下面是你的代码:

let request = require('request');
let url = "https://blockchain.info/ticker"

request.get(url, function(error, response, body) {
    console.log(body); //first
    console.log(JSON.parse(body).USD); // second
});

请求将响应作为JSON返回。你必须用JSON解析它。解析以检索USD属性。

输出量

{
  "USD" : {"15m" : 1034.66, "last" : 1034.66, "buy" : 1033, "sell" : 1034.66,  "symbol" : "$"},
  "ISK" : {"15m" : 116053.35, "last" : 116053.35, "buy" : 115867.16, "sell" : 116053.35,  "symbol" : "kr"},
  "HKD" : {"15m" : 8040.9, "last" : 8040.9, "buy" : 8028, "sell" : 8040.9,  "symbol" : "$"},
  "TWD" : {"15m" : 31364.68, "last" : 31364.68, "buy" : 31314.36, "sell" : 31364.68,  "symbol" : "NT$"},
  "CHF" : {"15m" : 1030.56, "last" : 1030.56, "buy" : 1028.91, "sell" : 1030.56,  "symbol" : "CHF"},
  "EUR" : {"15m" : 963.59, "last" : 963.59, "buy" : 962.04, "sell" : 963.59,  "symbol" : "€"},
  "DKK" : {"15m" : 7168.31, "last" : 7168.31, "buy" : 7156.81, "sell" : 7168.31,  "symbol" : "kr"},
  "CLP" : {"15m" : 685565.72, "last" : 685565.72, "buy" : 684465.8, "sell" : 685565.72,  "symbol" : "$"},
  "CAD" : {"15m" : 1379.97, "last" : 1379.97, "buy" : 1377.76, "sell" : 1379.97,  "symbol" : "$"},
  "CNY" : {"15m" : 7129.21, "last" : 7129.21, "buy" : 7117.77, "sell" : 7129.21,  "symbol" : "¥"},
  "THB" : {"15m" : 35623.34, "last" : 35623.34, "buy" : 35566.19, "sell" : 35623.34,  "symbol" : "฿"},
  "AUD" : {"15m" : 1348.93, "last" : 1348.93, "buy" : 1346.76, "sell" : 1348.93,  "symbol" : "$"},
  "SGD" : {"15m" : 1443.44, "last" : 1443.44, "buy" : 1441.13, "sell" : 1443.44,  "symbol" : "$"},
  "KRW" : {"15m" : 1155404.82, "last" : 1155404.82, "buy" : 1153551.1, "sell" : 1155404.82,  "symbol" : "₩"},
  "JPY" : {"15m" : 115073.68, "last" : 115073.68, "buy" : 114889.05, "sell" : 115073.68,  "symbol" : "¥"},
  "PLN" : {"15m" : 4071.54, "last" : 4071.54, "buy" : 4065.01, "sell" : 4071.54,  "symbol" : "zł"},
  "GBP" : {"15m" : 831.84, "last" : 831.84, "buy" : 830.51, "sell" : 831.84,  "symbol" : "£"},
  "SEK" : {"15m" : 9209.38, "last" : 9209.38, "buy" : 9194.6, "sell" : 9209.38,  "symbol" : "kr"},
  "NZD" : {"15m" : 1474.13, "last" : 1474.13, "buy" : 1471.76, "sell" : 1474.13,  "symbol" : "$"},
  "BRL" : {"15m" : 3231.65, "last" : 3231.65, "buy" : 3226.47, "sell" : 3231.65,  "symbol" : "R$"},
  "RUB" : {"15m" : 58268.79, "last" : 58268.79, "buy" : 58175.31, "sell" : 58268.79,  "symbol" : "RUB"}

}
{ '15m': 1034.66,
  last: 1034.66,
  buy: 1033,
  sell: 1034.66,
  symbol: '$' }
封飞
2023-03-14

你测试过病例敏感性吗?Javascript是区分大小写的,所以您可能需要使用

console.log(body.USD);

用我的一些json对象测试了它,它似乎就是这样工作的

 类似资料:
  • 我之前问过这个问题,它与这个问题相关(如何从异步调用返回响应?),但它并没有解决我的问题 我是node.js的新手,我遇到了一些我无法处理的错误,或者找不到任何我理解的帮助。我使用express generator初始化应用程序。我试图通过一个api调用将我得到的对象发送到前端。我编写了一个类“StockClass.js”,其中包含一个函数makeApiCall(),该函数进行调用并返回对象。但当

  • 我有一个微不足道的问题,但由于某种原因我无法解决。 我有一个对象,它是来自API的返回请求: 和: 第一部分是在react组件之前首先出现的内容。我能够获取一个对象,然后创建一个返回另一个对象的变量(const),在本例中: 对于我的无知,奇怪的部分是,如果我试图以这种方式访问第一个值(feels_like): 它将抛出一个错误,即无法读取未定义的属性feels_like。 现在,我试图循环遍历对

  • 只需根据UTC更改时间即可查看... 但我得到了一个不完整的削减版本上的移动应用程序... 'String ArchiveQuery="http://maps.googleapis.com/maps/api/directions/json?origin=RVCollege Bus Station, Mysore Road,班加罗尔,卡纳塔克邦 试试看{

  • 我有一个使用Spring JPA的Spring项目。我有一个和的表,我已经将它们映射到中,如下所示: 品牌实体: 产品实体: 例如,我只想获取仅获取(品牌标识和品牌名称),而不获取产品,我如何仅获取品牌信息?非常感谢。 编辑1 我想访问所有品牌,但不访问每个品牌的。可能吗?还是我要创建另一个类? --编辑2-- 下面是使用 我想要的应该是和列,而不是@manytomy关系产生的

  • 问题内容: 对象a2的类型为A,但引用了类C的对象。因此,a2应该能够访问m3()。但是,为什么不发生呢?如果在类A中定义了m3()方法,则代码可以正常运行 问题答案: 这意味着您只能访问Class的成员和Class的实现(如果有的话)。 现在m3不是的成员。清楚吗?

  • 问题内容: 我正在尝试从字符串(从Web获取)中读取JSON,但返回。 具体来说,给我 考虑包含以下JSON字符串: 编辑:最终代码工作 特别感谢Sufian和Ved! 问题答案: “ id”和“ name”位于JSON对象内部,键为“ rikeard”。因此,您需要进行如下更改: