2017-03-08 18 views
9

Mam następujący, bardzo podstawowy kod, który wyrzuca; Błąd typu: obiekt JSON należy STR, a nie „bajty”TypeError: obiekt JSON musi być str, nie "bajty"

import requests 
import json 

url = 'my url' 
user = 'my user' 
pwd = 'my password' 

response = requests.get(url, auth=(user, pwd)) 

if(myResponse.ok): 
    Data = json.loads(myResponse.content) 

próbuję ustawić dekodowanie do zmiennych danych, jak następuje ale rzuca ten sam błąd; jData = json.loads(myResponse.content).decode('utf-8')

Wszelkie sugestie?

+0

po prostu użyj 'response.json()'. Ręcznie potrzebowałeś 'json.loads (myResponse.content.decode ('utf-8'))' –

Odpowiedz

15
json.loads(myResponse.content.decode('utf-8')) 

Po prostu umieszczasz to w złej kolejności, niewinna pomyłka.

4

wnioski Let dekodować go dla Ciebie:

data = response.json() 

Jeśli nagłówek Content-Type nie został prawidłowo ustawiony (to odpowiedzialność serwera ustawić, że do application/json), to czasami response.json nie działa. W takim przypadku możesz pobrać bajty z response.content i tekst z response.text.