2013-05-14 29 views
3

我正在訪問JSON文件的特定url(來自stackexchange和stackoverflow api)。當執行json.loads()命令它顯示了以下錯誤:當打開stackexchange api時,沒有JSON對象可以被解碼爲json

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,爲什麼?

回答

6

正如@Thomas暗示這是因爲the gzip compression
我建議使用requests庫,擔心這種東西給你:

import requests 

data_url = "https://api.stackexchange.com/2.1/search?page=1&pagesize=10&order=desc&sort=activity&tagged=pandas&site=stackoverflow" 
data_json = requests.get(data_url).json() 
相關問題