【问题标题】:Method to download json object as json file python将json对象下载为json文件python的方法
【发布时间】:2016-05-26 19:23:08
【问题描述】:

我正在尝试从json bitcoin api 中提取数据

存储在 json 文件中。首先我尝试了

import urllib, json
url = "http://api.coindesk.com/v1/bpi/currentprice.json"
response = urllib.urlopen(url)
data = json.loads(response.read())
print data

一开始可以,但如果我再次运行它,我会收到此错误:

Traceback (most recent call last):
  File "btc_api.py", line 4, in <module>
    data = json.loads(response.read())
  File "/usr/lib/python2.7/json/__init__.py", line 338, in loads
    return _default_decoder.decode(s)
  File "/usr/lib/python2.7/json/decoder.py", line 366, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "/usr/lib/python2.7/json/decoder.py", line 384, in raw_decode
    raise ValueError("No JSON object could be decoded")
ValueError: No JSON object could be decoded

我必须定期运行代码以获取最新货币并将其存储在数据库中。有人可以帮助我解决这个问题或任何想法如何做得更好吗?

【问题讨论】:

    标签: python json python-2.7 python-2.x


    【解决方案1】:

    您可以将requests 与它提供的json 方法一起使用:

    import requests
    
    url = "http://api.coindesk.com/v1/bpi/currentprice.json"
    data = requests.get(url).json()
    

    如果你仍然想使用urllib,请使用json.load

    import urllib
    import json
    
    url = "http://api.coindesk.com/v1/bpi/currentprice.json"
    response = urllib.urlopen(url)
    data = json.load(response)
    

    【讨论】:

    • @Array 你需要使用加载,而不是加载
    • 好的,我修好了。现在我得到 AttributeError: 'str' object has no attribute 'read'。 :/ 和其他两个方法抛出错误。
    • 如果我尝试其他方法,它会给我:raise ValueError("No JSON object could be decoded"
    • 什么 str 对象和读取?你能用我给你的确切代码吗,它没有任何问题
    • 首先我用负载纠正了我的原始代码中的负载。这给了我 str 错误。如果我将您的代码复制、粘贴到我的 .py 文件中并运行它,它会抛出 No JSON object could be decoded。这可能与我的库有关吗?
    猜你喜欢
    • 2016-01-21
    • 2016-08-23
    • 2018-11-01
    • 2021-08-22
    • 2020-10-06
    • 2021-11-03
    • 2017-10-25
    • 2018-11-23
    • 1970-01-01
    相关资源
    最近更新 更多