【问题标题】:Unable to use json.loads() due to 'expected string or buffer'由于“预期的字符串或缓冲区”而无法使用 json.loads()
【发布时间】:2018-07-03 07:02:29
【问题描述】:

一段时间以来,我一直试图从这个 api 响应中提取某些内容。

我的代码:

payload = {
    'symbol':'RPX-ETH',
    'from':'100603756',
    'to':'9516619507'
}
request = requests.get('https://api.kucoin.com/v1/open/chart/history', 
params=payload)
jdata = json.loads(request)
print jdata['c']

但我不断收到此错误:

TypeError: expected string or buffer

api 响应仅使用 .json() 作为参考:

{u'c': [0.00024, 0.000171, 0.000163, 0.000151, 0.000159, 0.000164}

【问题讨论】:

  • 尝试 jdata = request.json() print jdata['c']
  • 应该是 jdata = request.json() 而不是 jdata = json.loads(request)。
  • 结尾的] 不见了。错别字?
  • @Rakesh,谢谢
  • @Sumtinlazy。欢迎您。

标签: python json typeerror


【解决方案1】:

您可以使用 request.json 以字典形式访问返回数据。

替换

jdata = json.loads(request)
print jdata['c']

jdata = request.json() 
print jdata['c']

【讨论】:

    【解决方案2】:

    request 是整个请求响应对象。你需要通过request.body

    但是根本没有必要这样做,因为request.json() 会为您完成并返回一个已解析的 Python 数据结构。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-04-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-24
      相关资源
      最近更新 更多