2017-01-27 1 views
1

Im пытается получить довольно JSON, но всегда имеют ту же ошибку expected string or buffer мой код находится нижеОшибка при получении JSON с помощью oauthlib питона

 import urllib2 
     import json 
     import logging 
     from libs.requests_oauthlib import OAuth1Session 
     import libs.requests2 

     coke = OAuth1Session('user_key', 
          client_secret='user_secret', 
          resource_owner_key='key', 
          resource_owner_secret='key_secret') 

     headers = {'content-type': 'application/json'} 
     url = "http://test.hdp.pengostores.mx/api/rest/orders" 


     response = coke.get(url,headers=headers) 
     self.response.out.write(response.text) 

Мой журнал:

<type 'exceptions.Exception'> (/base/data/home/apps/s~precise-line-76299minutos/devvic.398776853921596377/delivery/handlers.py:5278) 
Traceback (most recent call last): 
    File "/base/data/home/apps/s~precise-line-76299minutos/devvic.398776853921596377/delivery/handlers.py", line 5274, in get 
    response = json.loads(coke.get(url,headers=headers)) 
    File "/base/data/home/runtimes/python27/python27_dist/lib/python2.7/json/__init__.py", line 338, in loads 
    return _default_decoder.decode(s) 
    File "/base/data/home/runtimes/python27/python27_dist/lib/python2.7/json/decoder.py", line 365, in decode 
    obj, end = self.raw_decode(s, idx=_w(s, 0).end()) 
TypeError: expected string or buffer 
+0

не использовать скриншот - теперь Я не могу скопировать текст вставки, чтобы показать вам, где проблема. – furas

+0

в сообщении об ошибке у вас есть 'json.loads (coke.get())', но я не вижу этого в вашем коде. Вы ставите неправильный код. – furas

+0

Да, извините, я поместил другой журнал, потому что я пытаюсь по-разному печатать json – victor

ответ

2

В сообщении об ошибке вы используете

json.loads(coke.get(...)) 

но get()response объект - вы необходимо использовать get().text или get().content (вместо get()), чтобы получить текст или байты.

Или попробуйте

data = coke.get(...).json() 

получить непосредственно JSON преобразованы в данные Python.


EDIT: в данных хорошенькие печати Python использовать pprint.pprint(data) или преобразовать данные Python в JSON строку, используя json.dumps()

Смотрите пример из док: https://docs.python.org/2/library/json.html

Pretty printing: 

>>> import json 
>>> print json.dumps({'4': 5, '6': 7}, sort_keys=True, 
...     indent=4, separators=(',', ': ')) 
{ 
    "4": 5, 
    "6": 7 
} 
+0

Ну, теперь печатается json, но напечатан inline, не отступающий/довольно – victor

+1

вы можете печатать данные Python с помощью 'pprint.pprint (data)' или вы можете преобразовать данные Python в текст JSON с помощью 'json.dumps()', а не 'json.loads()' - см. doc: https://docs.python.org/2/library/json.html – furas

Смежные вопросы