【问题标题】:How do I get the value from this API?我如何从这个 API 中获取价值?
【发布时间】:2020-06-26 13:05:37
【问题描述】:
  getCoinPrice(coinName: string) {
return this._http
  .get(
    `https://min-api.cryptocompare.com/data/pricemulti?fsyms=${coinName}&tsyms=EUR`
  ).pipe(map((result) => (result)));

“BTC”作为 coinName 的链接中的 JSON 是:{"BTC":{"EUR":8226.43}},该方法返回了一个 observable。

如何在变量中返回价格值(8226.43)?

【问题讨论】:

  • 将地图更改为map((result) => (result.BTC.EUR))
  • (result) => (result)) 最后一部分包含您的 json,如果您将最后一部分更改为 (result) => (console.log(result))) 您将能够在您可以按照 Madhawa Priyashantha 的建议访问 json 的对象和属性之后,在控制台中查看响应的值

标签: javascript angular typescript observable subscriber


【解决方案1】:

试试这个代码。应该适合你。

getCoinPrice(coinName: string) {
    return this._http
    .get(
      `https://min-api.cryptocompare.com/data/pricemulti?fsyms=${coinName}&tsyms=EUR`
  ).pipe(map((result) => (result.BTC.EUR)));

您可以在这里https://www.w3schools.com/js/js_objects.asp了解更多关于如何访问对象及其价值的信息

这里是关于如何使用对象的 Javascript MDN 解释:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Working_with_Objects

工作示例

这是为了展示我们将如何通过使用. 访问对象来获得您想要的值

//Your results
var result = JSON.parse('{"BTC":{"EUR":8226.43}}');

//This will print out 8226.43
console.log(result.BTC.EUR)

【讨论】:

  • 这个方法给了我一个 observable
  • 能否请您 console.log(result) 看看里面有什么?请张贴在这里。如果您上面提到的 JSON 输出,那么我的答案应该可以正常工作。
  • 这是我得到的输出: Observable {_isScalar: false, source: Observable, operator: MapOperator} 使用我编辑的代码:.pipe(map((result) => (result.coinName.欧元)));
  • 能否请您像这样:.pipe(map((result) => (console.log(result)))); 并在此处发布它?
  • @Quentin 您能否也接受我的解决方案作为“答案”。谢谢:)
【解决方案2】:

你想要result[coinName]["EUR"]

【讨论】:

    【解决方案3】:

    根据可观察到的结果,您得到 {"BTC":{"EUR":8226.43}}coinName BTC,您想要检索“8226.43 ”来自它。

    所以, coinName = 'BTC' & observableResult = {"BTC":{"EUR":8226.43}}

    如果你想根据coinName获取值,你可以使用下面的方法,因为coinName也是observableResult对象中的键(BTC)。 p>

    observableResult[coinName] // 这将导致 {EUR: 8226.43}

    因此,observableResult[coinName].EUR 将导致 8226.43

    【讨论】:

    • 虽然此代码可以解决 OP 的问题,但最好包含关于您的代码如何解决 OP 问题的说明。通过这种方式,未来的访问者可以从您的帖子中学习,并将其应用到他们自己的代码中。 SO 不是编码服务,而是知识资源。此外,高质量、完整的答案更有可能获得支持。这些功能,以及所有帖子都是独立的要求,是 SO 作为一个平台的一些优势,使其与论坛区分开来。您可以编辑以添加其他信息和/或使用源文档补充您的解释。
    猜你喜欢
    • 2018-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-11
    • 1970-01-01
    • 2021-07-24
    • 2020-11-23
    相关资源
    最近更新 更多