python – 打开stackexchange api作为json时,无法解码JSON对象
作者:互联网
我正在访问一个特定的URL来获取JSON文件(来自stackexchange和stackoverflow api).执行json.loads()命令时,它显示以下错误:
import urllib2
import json
url = "http://api.stackexchange.com/2.1/tags?order=desc&sort=popular&site=quant&pagesize=100&page=1"
data = json.loads(urllib2.urlopen(url).read())
<ipython-input-20-7540e91a8ff2> in <module>()
----> 1 data = json.loads(urllib2.urlopen(url).read())
/usr/lib/python2.7/json/__init__.pyc in loads(s, encoding, cls, object_hook, parse_float, parse_int, parse_constant, object_pairs_hook, **kw)
336 parse_int is None and parse_float is None and
337 parse_constant is None and object_pairs_hook is None and not kw):
--> 338 return _default_decoder.decode(s)
339 if cls is None:
340 cls = JSONDecoder
/usr/lib/python2.7/json/decoder.pyc in decode(self, s, _w)
363
364 """
--> 365 obj, end = self.raw_decode(s, idx=_w(s, 0).end())
366 end = _w(s, end).end()
367 if end != len(s):
/usr/lib/python2.7/json/decoder.pyc in raw_decode(self, s, idx)
381 obj, end = self.scan_once(s, idx)
382 except StopIteration:
--> 383 raise ValueError("No JSON object could be decoded")
384 return obj, end
ValueError: No JSON object could be decoded
另一方面,twitter api一切正常……为什么?
解决方法:
StackExchange API always compresses its responses,但是Python doesn’t automatically uncompress it,所以json正在获取gzip压缩数据.
This answer显示了如何使用gzip模块来处理响应.
标签:json,python,stackexchange 来源: https://codeday.me/bug/20190718/1493125.html