Ни один объект JSON не может быть декодирован при открытии StackExchange api как json
Я получаю доступ к определенному url-адресу для файла JSON (из api stackexchange и stackoverflow). При выполнении 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
С другой стороны, все отлично работает с API twitter... Почему?
У вопроса есть решение - Посмотреть?
Ответы - Ни один объект JSON не может быть декодирован при открытии StackExchange api как json / No JSON object could be decoded when opening stackexchange api as json
Является ответом!

15.05.2013 02:31:29
API StackExchange всегда сжимает свои ответы , но Python не автоматически распаковывает его, поэтому json получает данные gzipped.
Этот ответ показывает, как использовать модуль gzip для обработки ответа.

Рад, что это помогло. Если это решит вашу проблему, не забудьте принять ответ (нажмите галочку слева).

10.06.2013 07:19:24
Как @Thomas предполагает, что это из-за сжатия gzip .
Я рекомендую использовать библиотеку запросов, которая беспокоится о таких вещах для вас:
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()
Помочь в развитии проекта: