Ни один объект JSON не может быть декодирован при открытии StackExchange api как json

Ни один объект JSON не может быть декодирован при открытии StackExchange api как json

15.05.2013 02:08:40 Просмотров 52 Источник

Я получаю доступ к определенному 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

Является ответом!
Thomas K

15.05.2013 02:31:29

API StackExchange всегда сжимает свои ответы , но Python не автоматически распаковывает его, поэтому json получает данные gzipped.

Этот ответ показывает, как использовать модуль gzip для обработки ответа.

https://stackoverflow.com/questions/16553654/no-json-object-could-be-decoded-when-opening-stackexchange-api-as-json/16553919#comment23810344_16553919
Рад, что это помогло. Если это решит вашу проблему, не забудьте принять ответ (нажмите галочку слева).
Andy Hayden

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()
Закрыть X