2017-05-07 50 views
0

我做一个API请求。我的问题在于回应。这是UTF-8 JSON,但我收到的消息\t\n,我不能解码。Python的请求图书馆的“ t n的响应

邮差头信息

Connection →keep-alive 
Content-Encoding →gzip 
Content-Length →1199 
Content-Type →application/json; charset=UTF-8 
Date →Sun, 07 May 2017 16:13:24 GMT 
Server →nginx 
Vary →Accept-Encoding 
X-Main-Language →es 
X-Rate-Limit-Limit →500 
X-Rate-Limit-Remaining →497 
X-Rate-Limit-Reset →172 
X-Total-Count →2 

响应在python:

'\t{\n "id": 356557,\n "name": {\n  "es": "demo-`nwadigital"\n },\n "description": {\n  "es": null\n },\n "type": null,\n "email": "[email protected]",\n "logo": null,\n "contact_email": null,\n "country": "AR",\n "facebook": null,\n "twitter": "https:\\/\\/twitter.com\\/",\n "google_plus": null,\n "instagram": "https:\\/\\/instagram.com\\/",\n "pinterest": null,\n "blog": null,\n "business_id": null,\n "business_name": null,\n "business_address": null,\n "address": null,\n "phone": null,\n "customer_accounts": "optional",\n "plan_name": "Professional",\n "domains": [],\n "languages": {\n  "es": {\n   "currency": "ARS",\n   "active": true\n  },\n  "pt": {\n   "currency": "BRL",\n   "active": false\n  },\n  "en": {\n   "currency": "USD",\n   "active": false\n  }\n },\n "original_domain": "demonwadigital.mitiendanube.com",\n "main_currency": "ARS",\n "current_theme": "material",\n "main_language": "es",\n "admin_language": "es",\n "created_at": "2016-11-04T18:34:48+0000",\n "updated_at": "2016-11-04T18:34:50+0000"\n}'` 
def getUrl(url): 
    i_get = 3 
    while i_get != 0 : 
     try: 
      url = Request(url) 
      url.add_header('Authentication','bearer xxxxxxx') 
      response = urllib.request.urlopen(url) 

     except urllib.error.URLError as e: 
      i_get = i_get - 1 
      print('Error en el Get!' + str(i_get)) 
      # log Error 
     else: 
      i_get = 0 
      #data = json.loads(response.read().decode("utf8")) 
      data = response.read().decode("utf8") 
    return data 
getUrl('https://api.tiendanube.com/v1/xxxxx/store') 

有谁知道我应该改变或添加?

+1

你尝试'response.json()'?这会将它转换为Python对象。 – jonrsharpe

+0

'json.loads()'是另一种选择。 – DyZ

+0

我复制/粘贴你的榜样和'json.loads'工作。你出了什么问题? – tdelaney

回答

0
def getUrl(url): 
    i_get = 3 
    while i_get != 0 : 
     try: 
      url = Request(url) 
      url.add_header('Authentication','bearer xxxxxxx') 
      response = urllib.request.urlopen(url) 

     except urllib.error.URLError as e: 
      i_get = i_get - 1 
      print('Error en el Get!' + str(i_get)) 
      # log Error 
     else: 
      i_get = 0 
      #data = json.loads(response.read().decode("utf8")) 
      data = response.json() 
    return data 
getUrl('https://api.tiendanube.com/v1/xxxxx/store')