【发布时间】:2022-01-12 03:13:47
【问题描述】:
大家好,我正在调用此 API 以查看来自 Coingecko 的实时价格数据,我正在尝试解析 json 文件,但是当我使用 json.loads 时,我的代码中不断出现错误。我导入了 json 仍然得到这个错误
这是我的代码的 sn-p
import json
import requests
class LivePrice(object): #Coingecko API
def GetPrice(self, coin):
coinprice = coin
Gecko_endpoint = 'https://api.coingecko.com/api/v3/simple/price?ids='
currency = '&vs_currencies=usd'
url = Gecko_endpoint + coinprice + currency
r = requests.get(url, headers = {'accept': 'application/json'})
y = json.loads(r)
#print(r.json()[coinprice]['usd'])
如果我使用此打印功能,我会得到价格,但我希望能够使用该变量并将其传递给另一个类进行一些计算
在使用 Alpaca API 进行纸质交易时,只是尝试制作一个简单的交易机器人来获得乐趣
Traceback (most recent call last):
File "AlapacaBot.py", line 76, in <module>
r.GetPrice(Bitcoin)
File "AlapacaBot.py", line 65, in GetPrice
y = json.loads(r)
File "/usr/lib/python3.8/json/__init__.py", line 341, in loads
raise TypeError(f'the JSON object must be str, bytes or bytearray, '
TypeError: the JSON object must be str, bytes or bytearray, not Response
我正在按照 w3schools 的示例进行操作,但我不断收到错误消息 https://www.w3schools.com/python/python_json.asp
【问题讨论】:
-
requests.get()返回一个Response对象。在其上调用text()以获取响应正文为str。更简单的说,可以直接调用json()解析,不用单独导入json。 -
“我正在按照 w3schools 的示例进行操作,但我不断收到错误消息”不,您不是。为什么要将
Response对象传递给json.load?对于初学者,您可以使用result = r.json()。你可以做json.load(r.text),虽然这与r.json()基本相同 -
别忘了检查
r.status_code以确保请求成功(200是正常的“好”)。